Envío de múltiples formularios en Rails
Tengo que enviar múltiples formularios, seguí el consejo de este post:Cómo enviar formularios múltiples y duplicados desde la misma página en Rails, preferiblemente con un botón
Tenga en cuenta que todavía soy bastante nuevo en Rails / programación y algunas de mis formas de hacer las cosas podrían no ser las ideales.
Aquí está mi opinión:
= form_tag ([@event, @registration]) do
- x.times do
= render 'multi_form'
= submit_tag "Submit registrations"
El formulario (note que hay más campos):
- 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]"
El controlador:
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
Cuando se envía, parece, en cierta medida, estar haciendo lo correcto, por ejemplo, se envía un correo electrónico a x direcciones de correo electrónico únicas, lo que me hace pensar que @registration contiene los detalles correctos en cada bucle; sin embargo. Puedo ver que todos los parámetros están allí en el archivo de registro, excepto que: el título parece estar haciendo algo malo (ver a continuación: pero me enfocaré en eso más adelante), lo principal que quiero que haga ahora es ejecutarlo. Cada matriz y guardarlo como una nueva entrada.
El registro:
Parameters: {"utf8"=>"â", "authenticity_token"=>"BQXm5fngW27z/3Wxy9qEzu6D8/g9YQIfBL+mFKVplgE=", "event_id"=>"7", "registrations"=>[{"title"=>{"registration"=>"Mrs"}, "first_name"=>"Person", "last_name"=>"One", "email"=>"[email protected]"...
Espero que la información que proporcioné sea suficiente, cualquier consejo será apreciado.
¡Gracias!
EDITAR:
@iblue
¡Hizo el truco! Fue un error de validación y está guardando todo en diferentes filas. ¡Muchas gracias!
Una cosa más si puedo, alguna idea de cómo se debe formatear la parte del formulario de título para devolver el parámetro:
"title"=>"Mrs",
Opuesto a:
"registrations"=>[{"title"=>{"registration"=>"Mrs"},
¡Gracias de nuevo!