我有两个模型,保留和表,has_many通过它们之间的关系,连接表和模型集合,有一个单独的属性叫做:units_sold
我的预订模式:
class Reservation < ActiveRecord::Base
has_many :tables, through: :collections
has_many :collections
end
我的桌子型号:
class Table < ActiveRecord::Base
has_many :reservations, through: :collections
has_many :collections
end
最后是收集模型:
class Collection < ActiveRecord::Base
belongs_to :table
belongs_to :reservation
end
E.g:
以我的名义为9人预订(:units_sold)有2个表,每个表的容量为6,我想在一个表中有4个人,在第二个表上有5个人
我现在所拥有的是:
reservation_params
def reservation_params
params.require(:reservation).permit( :name, :total_units, table_ids: [],
collection_attributes: [ :units_sold],
table_attributes: [:capacity, :title])
end
和我提交预订的表格:
<%= form_for [current_user, @account, @reservation] do |f| %>
<header>
<h1>Make your reservation</h1>
</header>
<%= f.text_field :name, placeholder: "Name" %>
<%= f.number_field :total_units, placeholder: "How many people..." %>
<%= f.fields_for :collections do |c|%>
<% @tables.each do |p| %>
<label for="<%= p.title %>"><%= p.title %></label>
<%= c.number_field :units_sold, placeholder: "People per table..." %>
<%= check_box_tag "reservation[table_ids][]", p.id %>
<% end %>
<% end %>
<%= f.submit "Save" %>
<% end %>
我应该如何在预订控制器中执行reservation_params?并将表单嵌套为:每个表/预约关联的units_sold
答案 0 :(得分:0)
首先,您应该定义如下的关联:
has_many:collections
has_many:预订,通过:: collection
,首先定义集合,然后通过集合进行预订。同样,更新Table模型中的关联。
然后在定义关联后的预留模型中,添加以下行:
accepts_nested_attributes_for:collections
在reservation_params中,键“collection_attributes”和“table_attributes”应分别为“collections_attributes”和“tables_attributes”。