在尝试完成构建一个可以同时创建多个用户的表单的看似棘手的任务之后,我想通过分享我是如何做到的来回报它。令我惊讶的是,我无法找到任何解决此问题的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 %>