我最近正在将Railsv5.2.3
应用程序升级到Railsv6.0.2
。按照 Rails 升级指南中描述的步骤操作后,当我启动 rails 服务器并执行 GET 请求时,我得到Unpermitted parameters: :page, :sort, :beds, :baths, :floors
- Rails-6现在是否也在GET请求上强制使用强参数?
- 有没有办法从单个来源传递/允许我的应用程序中每个 GET 请求的所有参数(可能在 config 文件夹中定义一些配置设置(,而不是在每个方法上使用
params.permit
?
以下是回溯:
Started GET "/search?page=1&sort=mp&beds%5B%5D=4&baths%5B%5D=4&floors%5B%5D=2"
Processing by BuildingsController#search as HTML
Parameters: {"page"=>"1", "sort"=>"mp", "beds"=>["4"], "baths"=>["4"], "floors"=>["2"]}
[Unpermitted parameters: :page, :sort, :beds, :baths, :floors
应用详情:
- 红宝石 2.6.5
- 导轨 6.0.2
- 引导快照 1.4.5
提前感谢!
在调查并花了一些时间之后,我开始知道
- 它不是特定于 Rails-6 的。
- Rails-6 中的 GET 请求不会抛出不允许的参数错误。
- 我在控制器
redirect_to no_search_results_path(params.permit.except(:action, :controller)) and return
中使用此行,这导致了错误。我现在正在使用redirect_to no_search_results_path(params.to_enum.to_h.except(:action, :controller)) and return
,现在一切似乎都正常了。