我使用fields_for((不是为了嵌套表单,而是为了显示包含联接项的表单。我需要显示@seasons的数据,这些数据可以帮助我填充饮料。。。
<% @seasons do |season| %>
<%= fields_for "drinks[]", season.drink do |f| %>
...
<%= f.select :optimized_region_id ... %>
...
<% end %>
<% end %>
它运行良好。然而,即使@seasons从来都不一样,一些season.drink也可能是相同的项目;"父";关系(同季。饮料.id(这对我来说不是问题。
我的问题是表格发送的是:
drinks"=>{
"e80e15c1-a5d4-4df4-80c6-2efa96e39793"=>{"optimized_status"=>"1", "optimized_nickname"=>"Alex"},
"b7501fe0-3a78-412e-88d5-e7643d761a98"=>{"optimized_status"=>"1", "optimized_nickname"=>"Paul"}
...
}
并且应该发送这个:
drinks"=>{
"e80e15c1-a5d4-4df4-80c6-2efa96e39793"=>{"optimized_status"=>"1", "optimized_nickname"=>"Alex"},
"e80e15c1-a5d4-4df4-80c6-2efa96e39793"=>{"optimized_status"=>"0", "optimized_nickname"=>"Alex"},
"b7501fe0-3a78-412e-88d5-e7643d761a98"=>{"optimized_status"=>"1", "optimized_nickname"=>"Paul"}
...
}
看起来Rails正在合并在发送表单时具有相同id的饮料。有没有可能避免这种情况,即使他们喝的是同一种饮料,也把所有的饮料都送出去?
我在[]:中找到了一个设置season_id的解决方法
<%= fields_for "drinks[#{season.id}]", record.drink do |f| %>
现在,我所有的饮料都是从表格上寄来的,即使是id相同的饮料也是如此。