在一个表单上同时创建多个记录

时间:2014-11-19 17:06:04

标签: ruby-on-rails forms multiple-records

在尝试完成构建一个能够同时创建多个用户的表单的欺骗性任务之后,我想通过分享我的方式来支付它。令我惊讶的是,我无法找到解决此问题的任何SO答案。相反,问题/答案一直在解决在一个表单上创建模型及其关联的场景(使用nested_attributes)。

1 个答案:

答案 0 :(得分:0)

我必须将答案归功于Ryan Bates 2007年的帖子http://archive.railsforum.com/viewtopic.php?id=2696

您的控制器

 def new
   @owners = Array.new(3) { Owner.new } # set up any defaults here
 end

 def create
   @owners = params[:owners].values.collect { |owner| Owner.new(owner) }
   if @owners.all?(&:valid?)
     @owners.each(&:save!)
     redirect_to :action => 'index'
   else
     render :action => 'new'
   end
 end

您的观点 - new.erb.html

 <% form_tag :action => 'create' do %>
 <% @owners.each_with_index do |owner, index| %>
   <% fields_for "owners[#{index}]", owner do |f| %>
     First Name: <%= f.text_field :firstname  %>
     Last Name: <%= f.text_field :lastname  %>
   <% end %>
 <% end %>
        <%= submit_tag %>
 <% end %>