mah*_*ar4 5 ruby-on-rails ruby-on-rails-4
我有一个对象数组通过以下结构传递到我的控制器:
[
{
"id": 1,
"fruit_ids": [1, 2, 3]
},
{
"id": 2,
"fruit_ids": [4, 5, 6]
},
]
Run Code Online (Sandbox Code Playgroud)
根对象不是{},而是一个数组。我不确定如何为这种情况编写强参数状态。我努力了
params.permit [:id, fruit_ids: []]
Run Code Online (Sandbox Code Playgroud)
和其他类似的选项,但它不允许这样做。
编辑:
我没有在请求正文中发送 JSON 对象。我正在发送一个 JSON 数组。当我检查控制器中的值时params,结果如下:
{
"_json" => [
{"id"=>1, "fruit_ids"=>[1, 2, 3]},
{"id"=>2, "fruit_ids"=>[4, 5, 6]}
],
"format"=>"json",
"controller"=>"...",
"action"=>"..."
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,您应该始终发送 JSON 对象作为参数,当您没有明确给出对象的键时,它会_json按照您的参数的情况进行处理。
无论如何,要在您的情况下编写一个强大的参数,您可以这样做,
params = ActionController::Parameters.new({
"_json" => [
{"id"=>1, "fruit_ids"=>[1, 2, 3]},
{"id"=>2, "fruit_ids"=>[4, 5, 6]}
],
"format"=>"json",
"controller"=>"...",
"action"=>"..."
}
params.permit('_json': [:id, fruit_ids: []]) # You need this line.
# => {"_json"=>[{"id"=>1, "fruit_ids"=>[1, 2, 3]}, {"id"=>2, "fruit_ids"=>[4, 5, 6]}]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |