gpt4 book ai didi

ruby-on-rails - Rails 参数 : where did _json come from, 以及如何将其内容列入白名单?

转载 作者:行者123 更新时间:2023-12-05 04:55:21 25 4
gpt4 key购买 nike

我正在编写 Rails API 并尝试通过将 JSON 数组传递到 Controller 来同时创建多个记录,如下所示:

[
{
"workflow_id": 1,
"action": "Some Other Action",
"order": 2,
"notes": null
},
{
"workflow_id": 1,
"action": "Some Action",
"order": 1,
"notes": null
}
]

当我查看进入 Controller 的参数时,这是我所看到的:

<ActionController::Parameters {"_json"=>[{"workflow_id"=>1, "action"=>"Some Other Action", "order"=>2, "notes"=>nil}, {"workflow_id"=>1, "action"=>"Some Action", "order"=>1, "notes"=>nil}], "controller"=>"workflow_steps", "action"=>"update", "workflow_id"=>"1", "workflow_step"=>{}} permitted: false>

首先,我不熟悉_json。这是传入数组时的 Rails 约定吗?我找不到任何关于它的文档。

其次,当我尝试此操作时:WorkflowStep.create(params[:_json]) 我得到了预期的 ForbiddenAttributesError。但是,我不知道如何正确地将数组中的 json 对象列入白名单。我试过这些:

params.require(:_json).permit(_json: [:workflow_id, :action, :notes, :order])
params.permit(_json: [:workflow_id, :action, :notes, :order])

但我收到此错误:undefined method permit' for #Array:0x00007ffdeb0f8188`

我不确定如何进行。谢谢。

最佳答案

params.require(:_json) 返回一组 ActionController::Parameters 对象,因此您可以使用以下代码将其列入白名单:

params.require(:_json).map do |param| 
param.permit(:workflow_id, :action, :order, :notes).to_h
end

关于ruby-on-rails - Rails 参数 : where did _json come from, 以及如何将其内容列入白名单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65433158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com