我得到了:
" DEPRECATION WARNING:使用字符串键控制器调用URL助手, 行动已弃用。改为使用符号"
在进行单元测试时,我环顾四周,虽然我是新手,但我还没有确切地确定了大量的例子。它似乎通常来自params符号,但很多google结果都在抱怨这是一个错误的警告?
就我而言,它抱怨这一特定的一行:
<%= link_to exports_path(params.merge(format: 'xlsx')), :class => "btn btn-primary btn-xls" do %><i class="glyphicon glyphicon-download"></i>Export XLXS</a> <% end %>
我假设它抱怨params.merge(format: 'xlsx'))
,但我不明白为什么?通常我在使用符号时会看到此错误,但此处没有使用符号。
答案 0 :(得分:2)
这是因为action
和controller
是params
哈希中的字符串键。
params = {'controller': 'home', 'action': 'index'}
因此,当您将额外的密钥合并到此哈希时,您会收到此弃用警告。但是,您应该以更安全的方式构建要发送到link_to
的哈希。例如。在你的控制器
@my_params = {}
@my_params[:format] = 'xlsx'
@my_params[:name] = params[:name]
然后在你看来
= link_to exports_path(@my_params)
然后,您可以完全控制查询字符串中的内容。
编辑:
如果您需要params
内容的子集,则可以使用所需的密钥过滤params
哈希,例如,如果您需要name
和search
此
@my_params = params.slice(:name, :search)
@my_params[:format] = 'xlsx'