gpt4 book ai didi

ruby-on-rails - rails 5 : Merging parameters in view - where to permit them?

转载 作者:行者123 更新时间:2023-12-04 14:25:42 25 4
gpt4 key购买 nike

Rails 5 中合并实际页面查询字符串以链接新查询字符串的新方法是什么?

假设我有页面 http://localhost:3000?type=a我想向页面上的链接添加另一个查询参数:

<%= link_to root_path(params.merge(tech: "b")) do %>

但我得到:无法将不允许的参数转换为散列。我应该在哪里允许参数?
我尝试在 before_action 过滤器中执行此操作,但似乎为时已晚。

谢谢

编辑:

我的 Controller :

class HomeController < ApplicationController
before_action :permit_params

...

private

def permit_params
params.permit(:tech, :type)
end
end

最佳答案

您只需要将要合并的参数列入白名单

<%= 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,虽然这些键似乎没有搞乱任何东西,但很可能不需要(和 controlleraction 将被覆盖并且不会传递到您的 Controller 操作中)。注意:controller/action 是这样设置的,因为我在我的 HomeController index 操作上,而不是因为这就是 root_path 指向的内容

我只是不认为我可以推荐这样做,但是(似乎不确定,imo)......坚持使用白名单。

关于ruby-on-rails - rails 5 : Merging parameters in view - where to permit them?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45264159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com