我正在更新到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助手中使用?
答案 0 :(得分:3)
一般情况下,您不应在请求之间传递参数(请参阅 params.merge and cross site scripting ),而是切换新请求所需的参数并合并新的参数:
@csv_prms = params.slice(:param1, :param2).merge( format: :csv )
这会从参数中删除:controller
和:action
,根本不需要创建链接,因为您的link_to
语句应始终链接到操作你想要(而不是让用户摸索参数让你的网站创建任何链接)。