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

adamshen · April 19, 2016 · Last by springwq replied at April 19, 2016 · 3250 hits

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。

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

You need to Sign in before reply, if you don't have an account, please Sign up first.