我们说我的锻炼模型有很多项目。 锻炼也接受项的嵌套属性。使用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'
答案 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])
也会创建相关项目。