我遇到了通过关系使用has_many的模型实现嵌套表单的问题
我有3个模型:预订,表格和集合(这两个的加入模型)
在我的预约控制器中,我有以下两种方法:
def new
@reservation = Reservation.new
@tables = Tables.all
@tables.size.times {@reservation.collections.build}
end
和
def reservation_params
params.require(:reservation).permit(:name, collections_attributes: [ :table_id, :units_sold],
tables_attributes: [:units, :title])
end
我的表单视图如下:
<%= form_for [current_user, @reservation] do |f| %>
<header>
<h1>Make Reservation</h1>
</header>
<%= f.text_field :name, placeholder: "Name" %>
<%= f.fields_for :collections do |builder| %>
<%= render 'nested_form', :f => builder %>
<% end %>
<%= f.submit "Save" %>
<% end %>
和我的_nested_form.html.erb文件:
<%= f.number_field :units_sold, placeholder: "Units" %>
<%= check_box_tag :table_id %>
我的问题是,每当我在数据库中保存新条目时,他都会将相同的table_id分配给所有集合关联,例如:
我想收到参数哈希,例如:
"collections_attributes"=>{"0"=>{"units_sold"=>"5", "table_id"=>"1"}, "1"=>{"units_sold"=>"6", "table_id"=>"2"}}}
相反,我得到的是:
"collections_attributes"=>{"0"=>{"units_sold"=>"5", "table_id"=>"1"}, "1"=>{"units_sold"=>"6", "table_id"=>"1"}}}
如何解决这个问题,为每个集合提供正确的table_id?
答案 0 :(得分:0)
如果你提供你的模型会更好。显示其关联的片段。
无论如何,根据你的表格; One Reservation有很多表格。
变化:
<%= check_box_tag :table_id %>
到
<% @tables.each do |table| %>
<li>
<%= f.radio_button :table_id %>
<%= f.label :table_id, table.name %>
</li>
<% end %>
通过这个,你可以使用单选按钮从每个集合中选择一个表。
希望这会有所帮助!