rails5 / params.merge会导致不安全的错误

时间:2016-02-03 23:39:54

标签: ruby-on-rails url ruby-on-rails-5

具有以下语法:url_for(params.merge(locale: :en))

Rails 5阻止它,抱怨以下内容:Generating an URL from non sanitized request parameters is insecure!

什么是最新的适当语法,以获得相同类型的结果?

2 个答案:

答案 0 :(得分:1)

您可以在url_for中合并本地:

url_for(locale: :en)

它将重用当前的请求参数来生成最终的URL。

答案 1 :(得分:0)

您可以通过以下方式覆盖ActionController::Parameter安全性

url_for(params.to_unsafe_h.merge(locale: :en))

我通常为此创建一个助手

def params_plus(additional_params)
  params.to_unsafe_h.merge(additional_params)
end

然后像使用它

url_for(params_plus(locale: :en))

其他答案建议url_for(locale: :en),但这会删除现有的请求参数,这不是我想要的。