Rails Rails 5 里的 Parameters 不再继承自 Hash

adamshen · 发布于 2016年4月19日 · 最后由 springwq 回复于 2016年4月19日 · 1137 次阅读
20859

url_for里多了一段检验parameters是否permit的语句

when ActionController::Parameters
   unless options.permitted?
     raise ArgumentError.new("Generating a URL from non sanitized request parameters is insecure!")
   end
   route_name = options.delete :use_route
   _routes.url_for(options.to_h.symbolize_keys.
                   reverse_merge!(url_options), route_name)

有很多Gem都使用了params再merge一些设置动态生成url,这时会rasie上面这个错误。

解决这个问题,除了permit参数以外,还可以用to_unsafe_h直接将Parameters转成hash。

共收到 1 条回复
4898

今天也碰到这个问题,Rails 5 的 安全性又提高了。另外 params.merge! 这个方法将被移除,可用 params.merge 代替, 然后需要什么参数再 permit 参数的 key

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册