首页 > 解决方案 > 强参数中的嵌套数组

问题描述

我有通过 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"
      }
    }
  }
}

标签: ruby-on-railsmodel-view-controllerruby-on-rails-6

解决方案


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

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

推荐阅读