Rails 5中将实际页面查询字符串合并为一个新链接的新方法是什么?
我们假设我有页面http://localhost:3000?type=a,我想在页面上的链接中添加另一个查询参数:
<%= link_to root_path(params.merge(tech: "b")) do %>
但是我得到:无法将未经许可的参数转换为哈希。 我应该在哪里允许参数? 我尝试在 before_action 过滤器中进行此操作,但似乎为时已晚。
由于
修改
我的控制器:
class HomeController < ApplicationController
before_action :permit_params
...
private
def permit_params
params.permit(:tech, :type)
end
end
答案 0 :(得分:3)
您只需要将要与
合并的参数列入白名单<%= link_to 'Home', root_path(params.permit(:type, :tech).merge(tech: 'b')) %>
并获取/?tech=b&type=a
。如果确实想要所有参数,您可以使用permit!
<% params.permit! %>
<%= link_to 'Home', root_path(params.merge(tech: 'b')) %>
这会给你/?action=index&controller=home&tech=b&type=a
,虽然这些键似乎没有搞乱任何东西,很可能不需要(controller
和action
将被覆盖而不是传递到你的控制器动作)。注意:controller
/ action
是这样设置的,因为我正在执行HomeController
index
操作,而不是因为这是root_path
指向的内容
我只是不认为我可以推荐这样做,但是(看起来如果,imo)...坚持使用白名单。