我使用Rails 5在我的应用程序,并为的link_to在下面找到我的代码,并使用will_paginate,Rails的5试图生成非消毒请求的URL参数
<%=link_to text, params.merge({controller: controller, action: action, page: 1,
order_field: field, order_dir: dir}) %>
上面的代码如下抛错误
Attempting to generate a URL from non-sanitized request parameters! An attacker can inject malicious data into the generated URL, such as changing the host.
即使我尝试使用如下许可证和避免上述错误,
<%=link_to text, params.permit!(page: 1).merge({controller: controller, action: action,
order_field: field, order_dir: dir}) %>
但是,这在圈通过如下RSpec的我提出问题,
Failure/Error: render ActionView::Template::Error: undefined method
permit!' for {:show_aliases=>"true"}:Hash # ./app/views/shared/_sort_column.html.erb:10:in
_app_views_shared__sort_column_html_erb___3232147907220672307_98274920'
为解决类似的问题的任何帮助。
尝试生成该散列'params.permit(页面:1)!.merge({控制器:控制器,动作:动作, order_field:场,order_dir:dir})'在控制器内部,然后在视图中使用它。 –
有没有你的控制器没有这样做的原因?这似乎违反了MVC模式,因为视图不应该关心参数强度,控制器应该是。如果您可以在控制器中保留这些类型的问题,您的应用代码将更加直接地维护。 –