【问题标题】:Unable to send array from form - Rails无法从表单发送数组 - Rails
【发布时间】:2023-03-22 17:28:01
【问题描述】:

好的,我已经为此苦苦挣扎了一段时间,但我不确定自己做错了什么。我知道这已被问过几次,但其他问题的答案对我的情况并不完全适用。我正在尝试将特定字段作为数组发送到 rails 无济于事。

生成的html是这样的

<input class="form-control" id="groups_header_0_version_number_value" name="groups[header][0][version][number][value]" placeholder="value" type="text">
<input class="form-control" id="groups_header_0_version_creator_value" name="groups[header][0][version][creator][value]" placeholder="value" type="text">

<input class="form-control" id="groups_header_1_version_number_value" name="groups[header][1][version][number][value]" placeholder="value" type="text">
<input class="form-control" id="groups_header_1_version_creator_value" name="groups[header][1][version][creator][value]" placeholder="value" type="text">

我想将header 作为数组发送到rails 服务器。当我在控制器中将params[:group] 渲染为json 时,我得到了

{  
  "header":{  
    "0":{  
      "version":{  
        "number":{  
          "operator":"\u003c=",
          "value":"34"
        },
        "creator":{  
          "operator":"=",
          "value":"joseph"
        }
      }
    },
    "1":{  
      "version":{  
        "number":{  
          "operator":"\u003c",
          "value":"87"
        },
        "creator":{  
          "operator":"=",
          "value":"john"
        }
      }
    }
  }
}

我真正想要的是一个 json 结构,其中 header 像一个数组一样

{  
  "header":[  
    {  
      "0":{  
        "version":{  
          "number":{  
            "operator":"\u003c=",
            "value":"34"
          },
          "creator":{  
            "operator":"=",
            "value":"joseph"
          }
        }
      },
      "1":{  
        "version":{  
          "number":{  
            "operator":"\u003c",
            "value":"87"
          },
          "creator":{  
            "operator":"=",
            "value":"john"
          }
        }
      }
    }
  ]
}

我应该如何正确命名输入框以按上述方式发送参数?谢谢

【问题讨论】:

    标签: ruby-on-rails json


    【解决方案1】:

    您将想要将您的 name 属性更改为:

    <input ... name="groups[header][][0][version][number][value]" ... >
    <input ... name="groups[header][][0][version][creator][value]" ... >
    
    <input ... name="groups[header][][1][version][number][value]" ... >
    <input ... name="groups[header][][1][version][creator][value]" ... >
    

    注意[header]之后的额外[]

    这会产生参数

    "groups"=>{"header"=>
       [
         {
           "0"=>{"version"=>{"number"=>{"value"=>""}, "creator"=>{"value"=>""}}}, 
           "1"=>{"version"=>{"number"=>{"value"=>""}, "creator"=>{"value"=>""}}}
         }
       ]
    }
    

    这似乎是你想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2022-01-18
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多