【问题标题】:nested array in strong parameters强参数中的嵌套数组
【发布时间】:2019-09-08 14:55:24
【问题描述】:

我有通过 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-rails model-view-controller ruby-on-rails-6


    【解决方案1】:

    试试这个方法,应该可以的:

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

    【讨论】:

    • 好的,谢谢!但是你能解释一下我的原因或问题吗? :)
    • @Evolutio 问题在于service: { [] =&gt; [ 定义。当键为空数组时添加的哈希。你不必那样做。 Rails 通过键中的数字识别array 并为您进行数组处理。
    猜你喜欢
    • 2014-10-20
    • 2014-06-12
    • 2015-09-20
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多