在Rails中提交多个表单

我必须提交多个表单,我按照这篇文章的建议: 如何在Rails中从同一页面提交多个重复的表单 – 最好只用一个按钮

注意我对Rails /编程还是一个新手,我的一些做事方式可能并不理想。

这是我的观点:

= form_tag ([@event, @registration]) do - x.times do = render 'multi_form' = submit_tag "Submit registrations" 

表格(注意还有更多字段):

 - hidden_field_tag :event_id, :value => @event.id .control-group = label_tag :title .controls = select("registrations[][title]", :registration, Registration::TITLE) .control-group = label_tag :first_name .controls = text_field_tag "registrations[][first_name]" .control-group = label_tag :last_name .controls = text_field_tag "registrations[][last_name]" .control-group = label_tag :email .controls = text_field_tag "registrations[][email]" 

控制器:

  def create array_number = 0 x.times do @registration = Registration.new(params[:registrations][array_number]) @registration.save UserMailer.registration_user_notify(@event, @registration).deliver array_number = array_number + 1 end respond_to do |format| format.html {redirect_to thank_you_event_registrations_path(@event)} end end 

提交时似乎在某种程度上做了正确的事情,因为它会发送一封电子邮件到x个唯一的电子邮件地址,这让我觉得@registration在每个循环中都包含正确的详细信息 – 它不会保存到数据库中然而。 我可以看到所有的参数都在日志文件中,除了:标题似乎做得不好(见下文:但我稍后会关注它),我现在要做的主要事情是运行虽然每个数组并将其保存为新条目。

日志:

 Parameters: {"utf8"=>"â", "authenticity_token"=>"BQXm5fngW27z/3Wxy9qEzu6D8/g9YQIfBL+mFKVplgE=", "event_id"=>"7", "registrations"=>[{"title"=>{"registration"=>"Mrs"}, "first_name"=>"Person", "last_name"=>"One", "email"=>"charl@privatelabel.co.za"... 

我希望我提供的信息足够,任何建议将不胜感激。

谢谢!

编辑:

@iblue

它成功了! 这是一个validation错误,它将所有内容保存到不同的行中。 非常感谢你!

还有一件事,如果我可以,任何想法如何:标题格式部分应该格式化,以便返回参数:

 "title"=>"Mrs", 

而不是:

 "registrations"=>[{"title"=>{"registration"=>"Mrs"}, 

再次感谢!

您没有检查@registration.save实际保存了记录。 它可以返回truefalse 。 我猜它只是默默地失败了。

如果你使用@registration.save! 当出现问题时,它会引发exception。 我想那里有一些validation错误。