Rails一次创建多个条目

时间:2014-03-01 23:50:21

标签: ruby-on-rails

我试图找出一次创建多个数据库条目的最简洁方法(或者如果它甚至是个好主意)。

通过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_bandevent_model需要event.id,我想我必须使用after_create回调来构建和保存它们。我对此进行概念化的问题是,我想在事件的表单中发布这些额外的:band_id:venue_id参数。

是否有更简洁的方法通过一个表单处理多个模型的发布参数,然后在回调中使用它们,或者我朝错误的方向前进?

1 个答案:

答案 0 :(得分:1)

您可以使用fields_for:see doc