有强参数的嵌套数组

时间:2019-09-08 14:55:24

标签: ruby-on-rails model-view-controller ruby-on-rails-6

我有一些输入会通过ajax加载,并以其他形式插入javascript,并带有以下字段:

<input name="project[config][service][3][web][auth]" type="checkbox">

和另外两个输入:

<input type="text" name="project[config][service][3][web][user]">
<input type="text" name="project[config][service][3][web][pass]">

如何允许控制器接受这些值?

我尝试了这些:

params.require(:project).permit(
        :title,
        :description,
        config: [
            service: {
                [] => [
                    :domains,
                    web: [
                        :auth,
                        :user,
                        :pass
                    ]
                ]
            }
        ],
        documents: []
      )

但是没有用。 在控制台中,我将其设置为project_params[:config]

{"service"=><ActionController::Parameters {"3"=><ActionController::Parameters {} permitted: true>} permitted: true>}

params[:project][:config]看起来像这样:

{
  "service" => { 
    "3" => {
      "web" => {
        "auth"=>"on",
        "user"=>"asdasdasdasda",
        "pass"=>"asdasdasd"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

以这种方式尝试,它应该可以工作:

params.require(:project).permit(
       :title, 
       :description, 
       config: {
         service: [
           :domains,
           web: [:auth, :user, :pass]
         ]
       },
       documents: []
     )