ruby-on-rails - 如何从 Rails 4 中的表单发送哈希数组

标签 ruby-on-rails

我正在尝试从我的参数中获取对象数组,寻找如下所示的内容:

"invoice"=>{"items"=>[{"description"=>"[no description]", "units"=>"0", "rate"=>"0"}, {"description"=>"[no description]", "units"=>"0", "rate"=>"0"}]}

我正在这样设置我的表单:

<input type="hidden" name="invoice[invoice_items][description]" />
<input type="hidden" name="invoice[invoice_items][units]"/>
<input type="hidden" name="invoice[invoice_items][rate]" />

输入是动态添加的,因此每个对象有 3 个组;在 Rails 中从表单发送对象数组的正确方法是什么?

该表单请求的结果如下所示:

"invoice"=>{"items"=>{"description"=>"[no description]", "units"=>"0", "rate"=>"0"}}

即使我添加更多项目,第一个项目总是有一个哈希

最佳答案

尝试添加方括号:

<input type="hidden" name="invoice[items][][description]">
<input type="hidden" name="invoice[items][][units]">
<input type="hidden" name="invoice[items][][rate]">

Rails 会将这些参数解析为:

"invoice" => {
  "items"=> [
    { "description" => "", "units" => "", "rate" => "" },
    { "description" => "", "units" => "", "rate" => "" }
  ]
}

关于ruby-on-rails - 如何从 Rails 4 中的表单发送哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36431863/

相关文章:

jquery - 使用 HTTP PUT 通过 Jquery 和 Rails 3 发送 JSON

ruby-on-rails - 如果 find 在 rails 中没有返回任何内容,我如何跳过错误?

ruby-on-rails - 在 routes.rb 中获取、匹配和资源

ruby-on-rails - "Request has expired"将 S3 与 Active Storage 一起使用时

ruby-on-rails - rails 4 中需要的重要 rails 3.2 概念

ruby-on-rails - 安装在子域上的 Engine 中的路由不继承约束

ruby-on-rails - 将 Rails 管道获取到 gzip xml Assets

ruby-on-rails - Ruby - 无法在 45 秒内绑定(bind)到锁定端口 7054 (Selenium::WebDriver::Error::WebDriverError)

ruby-on-rails - 查找存在属性的记录

ruby-on-rails - 弃用警告 : f. error_messages 已从 Rails 中删除,现在可作为插件使用