我收到了这个参数:
<ActionController::Parameters
{"page_hierarchy"=>
[<ActionController::Parameters
{"id"=>"6", "children"=>[
{"id"=>"1", "children"=>[{"id"=>"2"},
{"id"=>"5"},
{"id"=>"3"},
{"id"=>"18"},
{"id"=>"4"}]}]} permitted: false>]} permitted: false>
页面"page_hierarchy"
是一个由多个"{id: , children: }"
元素组成的数组。
children
也是一个由多个"{id: , children: }"
元素组成的数组。
如何以此格式允许参数?
像这样的解决方案对我来说不起作用,因为数组是多维的Permit array in params
答案 0 :(得分:1)
您可以通过允许哈希而不是数组来实现此目的,如下所示:
permit!
Rails Guides进一步详细说明:
有时声明有效密钥是不可能或不方便的 哈希参数或其内部结构。只是映射到空 散列:
params.permit(preferences:{})但要小心,因为这会打开 任意输入的大门。在这种情况下,许可证确保了价值 返回的结构是允许的标量和过滤掉任何东西 其他
由于你的params是深层嵌套的,你可能必须将整个哈希列入白名单,你可以使用params.permit!(:page_hierarchy)
,但要注意这可能会带来安全问题:
{{1}}
再次,取自Rails Guides:
将整个参数哈希列入白名单,许可证!方法可以 使用:
params.require(:log_entry).permit!这标志着:log_entry 参数哈希及其允许的任何子哈希值,不检查 对于允许的标量,任何事都被接受。应该非常小心 使用许可证时采取,因为它将允许所有当前和未来 模型属性被分配。