我必须提交多个表单,我遵循了这篇文章的建议:如何从 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 在每个循环中都包含正确的详细信息 - 它没有保存到数据库中然而。我可以看到所有参数都在日志文件中,除了 :title 似乎做错了什么(见下文:但我稍后会重点关注),我现在想要它做的主要事情是运行每个数组并将其保存为新条目。
日志:
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
它成功了!这是一个验证错误,它将所有内容保存到不同的行中。非常感谢你!
如果可以的话,还有一件事,知道应该如何格式化 :title 表单部分以返回参数:
"title"=>"Mrs",
相对于:
"registrations"=>[{"title"=>{"registration"=>"Mrs"},
再次感谢!