2016-07-25 93 views
0

params[:type]等於item(單數)如何動態修改Rails路徑名?

我需要給用戶發送到

items_path(name: params[:name]) 

我需要變複數的路徑params[:type]一部分,並與我的觀點將其合併以獲得我的鏈接的權利,以及我正在努力做到這一點。

回答

3

這取決於。對於無條件多元化,你可以這樣做:

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

但它似乎不是一個非常安全的解決方案給我。以用戶輸入並執行它爲例,總是在我頭腦中敲響一個鐘。也許,一些白名單會更好(更可讀)

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

我懷疑它與發送有關。謝啦。 –