如何从表单中获取对象数组?

时间:2016-04-19 17:51:38

标签: ruby-on-rails ruby-on-rails-4 form-for

我们说我的锻炼模型有很多项目锻炼也接受的嵌套属性。使用form_for我想以下列方式在数组中发送 item 的参数:

"workout"=>{"workout_title"=>"title",
  "items"=>{
    ["name"=>"first item", "name"=>"second item"]
  }
 }

但出于某种原因,我只能像这样得到它

 "workout"=>{"workout_title"=>"title",
   "items"=>{"name"=>"second_item"}
 }

我该如何解决这个问题?

这是产生上述参数的表格。

= form_for :workout, url: welcome_index_path, method: :post do |f|
  = f.text_field :workout_title
  = f.fields_for :items, child_index: 1 do |builder|
    = builder.text_field :name
  = f.fields_for :items, child_index: 2 do |builder|
    = builder.text_field :name, id: 'workout_items_name_2', name: 'workout[items][name]'
  = f.submit 'Go'

1 个答案:

答案 0 :(得分:2)

为什么不让fields_for为您生成所有物品?

= form_for @workout, url: welcome_index_path, method: :post do |f|
  = f.text_field :title
  = f.fields_for :items do |builder|
    = builder.text_field :name
  = f.submit 'Go'

它会在@workout中显示所有项目的文本字段。此外,您将收到params[:workout][:item_attributes]中的项目。另外,Rails'@post.save(params[:workout])也会创建相关项目。