Enviando vários formulários no Rails
Eu tenho que enviar vários formulários, segui o conselho deste post:Como enviar vários formulários duplicados da mesma página no Rails - de preferência com um botão
Note que ainda sou novato em Rails / programação e algumas das minhas maneiras de fazer as coisas podem não ser ideais.
Aqui está minha opinião:
= form_tag ([@event, @registration]) do
- x.times do
= render 'multi_form'
= submit_tag "Submit registrations"
O formulário (observe que há mais 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]"
O 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
Ao enviar parece que, até certo ponto, estar fazendo a coisa certa, por exemplo, dispara um email para x endereços de email exclusivos, o que me faz pensar que o @registration contém os detalhes corretos em cada loop - não está salvando no banco de dados Contudo. Eu posso ver que todos os parâmetros estão lá no arquivo de log, exceto que: title parece estar fazendo algo ruim (veja abaixo: mas eu vou focar nisso mais tarde), a principal coisa que eu quero fazer agora é rodar embora cada matriz e salve-a como uma nova entrada.
O registro:
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"...
Eu estou esperando que a informação que forneceu seja suficiente, qualquer conselho será apreciado.
Obrigado!
EDITAR:
@iblue
Ele fez o truque! Foi um erro de validação e está salvando tudo em linhas diferentes. Muito obrigado!
Mais uma coisa, se puder, qualquer ideia de como a parte do formulário de título deve ser formatada para retornar o parâmetro:
"title"=>"Mrs",
ao contrário de:
"registrations"=>[{"title"=>{"registration"=>"Mrs"},
Obrigado novamente!