如何动态修改Rails路径名?

时间:2016-07-25 07:31:38

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我的params[:type]等于item(单数)

我需要将用户发送到

items_path(name: params[:name])

我需要复制路径的params[:type]部分并将其与我的视图合并以使我的链接正确,而我正在努力做到这一点。

1 个答案:

答案 0 :(得分: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