【问题标题】:Rails-6 Unpermitted parameters on GET requestRails-6 GET 请求中不允许的参数
【发布时间】:2020-01-11 08:37:56
【问题描述】:

我最近将 Rails v5.2.3 应用程序升级到 Rails v6.0.2。遵循 Rails 升级指南中描述的步骤后,当我启动 rails 服务器并执行 GET 请求时,我得到Unpermitted parameters: :page, :sort, :beds, :baths, :floors

  • Rails-6 现在是否也对 GET 请求强制使用强参数?
  • 是否有任何方法可以从单一来源(可能在 config 文件夹中定义一些配置设置)传递/允许我的应用程序中每个 GET 请求的所有参数,而不是在每个方法上使用 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
  • bootsnap 1.4.5

提前致谢!

【问题讨论】:

  • 可以在每个控制器中添加参数def person_params params.require(:person).permit(:page, :sort, :beds, :baths, :floors) end
  • 我认为我不必为每个控制器的动作都这样做!必须有一些配置级别设置才能工作,或者可能在 application_controller 内
  • @KamalPanhwar 看来您还没有阅读我的整个问题!我在 GET 请求中遇到了这个问题,您提供的解决方案适用于 POST 请求

标签: strong-parameters ruby-on-rails-6


【解决方案1】:

经过一番调查和研究,我才知道

  • 这不是 Rails-6 特定的。
  • Rails-6 中的 GET 请求不会引发 Unpermitted parameter 错误。
  • 我在控制器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,现在似乎一切正常。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多