Rails:使用字符串键控制器调用URL助手,不推荐使用action。改为使用符号?

时间:2017-02-13 14:57:43

标签: ruby-on-rails

我得到了:

  

" 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> &nbsp; <% end %>

我假设它抱怨params.merge(format: 'xlsx')),但我不明白为什么?通常我在使用符号时会看到此错误,但此处没有使用符号。

1 个答案:

答案 0 :(得分:2)

这是因为actioncontrollerparams哈希中的字符串键。

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哈希,例如,如果您需要namesearch

@my_params = params.slice(:name, :search)
@my_params[:format] = 'xlsx'