Senden mehrerer Formulare in Rails
Ich muss mehrere Formulare einreichen, ich habe den Rat dieses Beitrags befolgt:So senden Sie mehrere, doppelte Formulare von derselben Seite in Rails - vorzugsweise mit einer Schaltfläche
Hinweis Ich bin noch ziemlich neu in Rails / Programmierung und einige meiner Vorgehensweisen sind möglicherweise nicht ideal.
Hier ist meine Ansicht:
= form_tag ([@event, @registration]) do
- x.times do
= render 'multi_form'
= submit_tag "Submit registrations"
Das Formular (beachten Sie, dass es mehr Felder gibt):
- 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]"
Der Controller:
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
Bei der Übermittlung scheint es bis zu einem gewissen Grad richtig zu sein, zum einen wird eine E-Mail an x eindeutige E-Mail-Adressen gesendet, was mich glauben lässt, dass @registration in jeder Schleife die richtigen Details enthält - es wird nicht in der Datenbank gespeichert jedoch. Ich kann sehen, dass alle Parameter in der Protokolldatei vorhanden sind, mit der Ausnahme, dass title anscheinend etwas Schlechtes tut (siehe unten, aber ich werde mich später darauf konzentrieren). Die Hauptsache, die ich jetzt ausführen möchte, ist jedoch, dass sie ausgeführt wird jedes Array und speichern Sie es als neuen Eintrag.
Das Protokoll:
Parameters: {"utf8"=>"â", "authenticity_token"=>"BQXm5fngW27z/3Wxy9qEzu6D8/g9YQIfBL+mFKVplgE=", "event_id"=>"7", "registrations"=>[{"title"=>{"registration"=>"Mrs"}, "first_name"=>"Person", "last_name"=>"One", "email"=>"[email protected]"...
Ich hoffe, dass die Informationen, die ich zur Verfügung gestellt habe, ausreichen, jeder Rat wird geschätzt.
Vielen Dank!
BEARBEITEN:
@iblue
Es hat den Trick gemacht! Es war ein Validierungsfehler und es wird alles in verschiedenen Zeilen gespeichert. Vielen Dank!
Eine weitere Sache, wenn ich darf, eine Idee, wie der: title-Formularteil formatiert werden sollte, um paramater zurückzugeben:
"title"=>"Mrs",
im Gegensatz zu:
"registrations"=>[{"title"=>{"registration"=>"Mrs"},
Danke noch einmal!