2016-07-25 17 views
0

Mein params[:type] gleich item (Singular)Wie ändern Sie Rails Pfadnamen dynamisch?

Ich brauche

die Benutzer senden
items_path(name: params[:name]) 

Ich brauche den params[:type] Teil des Weges pluralize und es mit meiner Ansicht verschmelzen zu meinem Link richtig, und Ich kämpfe darum.

Antwort

3

Kommt drauf an. Für unbedingte Pluralisierung können Sie dies tun:

plural = params[:type].pluralize # => 'items' 
route_method = "#{plural}_path" # => 'items_path' 
public_send(route_method, name: params[:name]) 

Aber es scheint nicht eine sehr sichere Lösung für mich. Benutzereingaben zu machen und es so auszuführen, läutet immer eine Glocke in meinem Kopf. Vielleicht wäre etwas Whitelisting besser (besser lesbar auch)

path = case params[:type] 
    when 'item' 
    items_path(name: params[:name]) 
    when 'foobar' 
    foobars_path 
    else 
    fail 'Unknown type' 
end 
+0

Ich vermutete, dass es etwas mit Senden zu tun hatte. Danke, Mann. –