我试图升级到Rails 5,但遇到以下弃用警告:
DEPRECATION WARNING: 方法to_hash已过时,并将在Rails 5.1中删除,因为不再继承自hash。使用此弃用的行为会暴露潜在的安全问题。如果你继续使用此方法,则可能会在应用程序中创建一个可被利用的安全漏洞。相反,请考虑使用这些已记录的未弃用的方法之一:http://api.rubyonrails.org/v5.0.0/classes/ActionController/Parameters.html(位于/Data/Projects/portal/trunk/app/helpers/application_helper.rb的column_header中调用)
警告出现的代码行如下:
link_to(name,
{
action: action_name,
params: params.merge({ order: key, page: nil })
},
{
title: "Sort by this field",
}) +
正如您所看到的,我没有调用to_hash
。可能是Rails,也可能是其他一些宝石库。我无法确定,因为他们不认为提供堆栈跟踪值得一提。(专业技巧 - 通常值得提供堆栈跟踪!)
无论如何,我按照链接,打算找到替代方案,但是合并的merge
方法似乎未被弃用,但也许他们只是忘记记录弃用状态,所以我无法确定。
那我该怎么清理它呢?
params.merge
还是link_to
调用了to_hash
? - mu is too shortparams
的参数来指定url_for
的参数,而不是直接在顶层传递参数,例如:link_to(name, {action: action_name, order: key, page: nil}.merge(params)
? - Mladen Jablanović{params: params}
,请尝试使用{params: params.to_h}
。 - Mladen Jablanović