我试图找出一次创建多个数据库条目的最简洁方法(或者如果它甚至是个好主意)。
通过event_bands和event_venues模型我有一个Event模型,它有很多Bands和很多Venues。
现在,用户首先创建事件,然后重定向到表单以创建event_band和event_venue关系。如果可能的话,我想将所有这些简化为一种形式,如下所示(底线是最相关的):
<%= form_for @event do |f| %>
<%= f.label :name %>
<%= f.text_field :name %><br />
<%= f.label :contact %>
<%= f.text_field :contact %><br />
<%= f.label :price %>
<%= f.text_field :price %><br />
<%= f.label :info %>
<%= f.text_area :info %><br />
<%= f.label :date %>
<%= f.date_select :date, start_year: 2014 %><br />
<%= f.label :time %>
<%= f.text_field :time, placeholder: "7:40pm" %><br />
<%= f.label :band %>
<%= select(:event_band, :band_id, options_for_select(Band.order(name: :asc).collect { |b| [b.name, b.id]} )) %><br />
<%= f.label :venue %>
<%= select(:event_venue, :venue_id, options_for_select(Venue.order(name: :asc).collect { |v| [v.name, v.id]} )) %><br />
<%= f.submit %>
<% end %>
由于event_band
和event_model
需要event.id
,我想我必须使用after_create
回调来构建和保存它们。我对此进行概念化的问题是,我想在事件的表单中发布这些额外的:band_id
和:venue_id
参数。
是否有更简洁的方法通过一个表单处理多个模型的发布参数,然后在回调中使用它们,或者我朝错误的方向前进?