Ruby on rails Rails 5:尝试从未清理的请求参数生成URL-如何找到白名单中的参数

Ruby on rails Rails 5:尝试从未清理的请求参数生成URL-如何找到白名单中的参数,ruby-on-rails,Ruby On Rails,我使用的是Rails 5和这个链接 <%= link_to 'Pdf', payments_path(params.merge(format: :pdf)), :target => "_blank" %> 并列出所有必要的参数 我是rails新手,到目前为止,我将表单的参数列为白名单,所以关于POST参数。在这种情况下,我只包括表单字段中使用的参数。但我知道这是关于url上的参数,所以查询字符串参数。那么,这是关于从ransack传递到url的参数,还是关于will_pag

我使用的是Rails 5和这个链接

 <%= link_to 'Pdf', payments_path(params.merge(format: :pdf)), :target => "_blank" %>
并列出所有必要的参数

我是rails新手,到目前为止,我将表单的参数列为白名单,所以关于POST参数。在这种情况下,我只包括表单字段中使用的参数。但我知道这是关于url上的参数,所以查询字符串参数。那么,这是关于从ransack传递到url的参数,还是关于will_paginate(我正在使用的gems)?这使我困惑


我如何准确地检查哪些参数需要被列入白名单以避免收到该错误

是的。创建像
which_params
这样的简单方法,并使用
params.require(:which).permit(…)
params.permit(…)

2.将您使用的所有参数移动到白名单。例如,您有大量参数的
GET
请求,但仅使用其中一些参数,这些参数是可选的:

def my_params
  params.permit(:category, :name, :age) #params that you use
end

如果您想使用params,您需要像在任何_params方法中一样将它们列为白名单,您不应该直接在控制器中使用params。首先将它们列为白名单,然后使用。好的,谢谢,但正如我之前提到的,我是为表单中使用的POST参数做的。很容易找到。但这个例子似乎与查询字符串参数有关。我不知道如何识别它们,以便能够将它们包含在我的whatever_params方法中。查询字符串参数并不重要,当您使用该参数时,请创建一个新函数,将您的查询字符串参数列为白名单,然后使用它们。我有一个带有窗体的视图的控制器。我创建了表单中包含参数的whatever_params方法。一切正常。然后添加我在
.merge
中提到的链接。错误就出来了。所以我的问题是,我如何找出哪些其他参数起作用?该按钮将转到使用prawn完成的pdf版本,并添加了.merge以使pdf中的结果通过ransack过滤,而不是显示所有结果。那么这是否意味着,如果我有一个搜索过滤器:category,那么在我的whatever_params方法中包含:category就足够了?好的,谢谢,这会让事情变得清晰一点。但让我们假设所讨论的数据库表只有3列:category、:name和:age。在这种情况下,无论发生什么情况,使用示例中的方法都可以解决问题?或者是否可能涉及其他参数?如果是,我如何找到它们?我查过痕迹,但找不到任何参考资料。我应该在哪里查找?如果您仅仅为了创建新对象而需要参数-
:category、:name、:age
就足够了。您可以在服务器日志文件中找到所有参数。它看起来像是
开始通过YourController方法在时间戳处理时获取::1的“your#url”作为HTML参数:{“param1”=>“1”,“param2”=>“2”}
或者在controller方法中创建一个断点,然后查看
params
散列中的内容
def my_params
  params.permit(:category, :name, :age) #params that you use
end