【发布时间】:2018-12-20 15:36:53
【问题描述】:
我的 rails 版本是 5,我有这样的请求参数,
{ "segment": {
"name": "test",
"new_filters": [
{"criteria": "sad",
"other_keys": [{"key": "value"}]
},
{"criteria": "sad",
"other_keys1": [{"key1": "value1"}]
}]
}
}
我坚持允许在 rails 控制器中使用 new_filter 参数, 我正在尝试下面的代码,
params.require(:segment).permit(:name, :people_count, new_filters: [])
并且仍然得到错误。但是,在 new_filter 键中有字符串数组时,情况并非如此。 例如:[“悲伤”,“asdasd”]。如何将嵌套结构作为白名单属性?
【问题讨论】:
-
试试
.permit(..., new_filters: [:criteria, other_keys: [:key1])。你的第二个new_filter有other_keys1,这会改变吗?你期待那里有什么价值吗?还是你总是知道那里会出现什么键?。 -
你在用这些参数做什么?您是否使用它们进行批量分配?还是别的什么?
-
permit也可以处理嵌套,但我们需要了解@jvillian 提到的你在做什么 -
@fanta,这似乎有效,但它显示了内部键的未经许可的参数。键只是预期的键,但在我的情况下嵌套级别太深了。
-
您应该允许所有这些,将它们添加到您的许可结构中,否则它们不会通过。这比
permit!最好,permit!是危险的,因为它会允许用户发送的所有内容。
标签: ruby-on-rails ruby-on-rails-5 strong-parameters