不推荐使用字符串键的URL助手,但params默认使用它们作为字符串

时间:2016-05-06 09:17:57

标签: ruby-on-rails

我正在更新到rails 4.2并获得此弃用警告:

Calling URL helpers with string keys controller, action is deprecated. Use symbols instead.

在控制器中,我正在重用params来创建一些具有相同参数的链接:

@csv_prms = params
@csv_prms[:format] = :csv
...

在我看来:

= link_to 'CSV', report_path(@csv_prms)

现在我注意到默认情况下,参数中的操作控制器是字符串而不是符号。是不是不合逻辑,因为他们被弃用以在URL助手中使用?

1 个答案:

答案 0 :(得分:3)

一般情况下,您不应在请求之间传递参数(请参阅 params.merge and cross site scripting ),而是切换新请求所需的参数并合并新的参数:

@csv_prms = params.slice(:param1, :param2).merge( format: :csv )

这会从参数中删除:controller:action,根本不需要创建链接,因为您的link_to语句应始终链接到操作想要(而不是让用户摸索参数让你的网站创建任何链接)。