在一个窗体上同时创建多个记录



在尝试完成构建一个可以同时创建多个用户的表单的看似棘手的任务之后,我想通过分享我是如何做到的来回报它。令我惊讶的是,我无法找到任何解决此问题的SO答案。相反,问题/答案一直在解决创建模型的方案及其在一个表单上的关联(使用 nested_attributes)。

我必须将答案归因于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 %>

相关内容

  • 没有找到相关文章

最新更新