如何动态修改Rails路径名?
How to modify Rails path names dynamically?
我的params[:type]
等于item
(单数)
我需要将用户发送至
items_path(name: params[:name])
我需要将路径的 params[:type]
部分复数化并将其与我的视图合并以使 link 正确,我正在努力做到这一点。
视情况而定。对于无条件多元化,您可以这样做:
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
我的params[:type]
等于item
(单数)
我需要将用户发送至
items_path(name: params[:name])
我需要将路径的 params[:type]
部分复数化并将其与我的视图合并以使 link 正确,我正在努力做到这一点。
视情况而定。对于无条件多元化,您可以这样做:
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