Przesyłanie wielu formularzy w Railsach
Muszę przesłać wiele formularzy, skorzystałem z porad tego posta:Jak przesłać wiele duplikatów formularzy z tej samej strony w Railsach - najlepiej za pomocą jednego przycisku
Uwaga: Nadal jestem całkiem nowy w Railsach / programowaniu i niektóre z moich sposobów robienia rzeczy mogą nie być idealne.
Oto mój pogląd:
= form_tag ([@event, @registration]) do
- x.times do
= render 'multi_form'
= submit_tag "Submit registrations"
Formularz (zwróć uwagę, że jest więcej pól):
- 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]"
Kontroler:
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
Przesyłając, wydaje się, że do pewnego stopnia postępuje słusznie, ponieważ jeden wysyła wiadomość e-mail na x unikalnych adresów e-mail, co sprawia, że myślę, że @registration zawiera poprawne szczegóły w każdej pętli - nie zapisuje się w bazie danych jednak. Widzę, że wszystkie parametry znajdują się w pliku dziennika, z wyjątkiem tego, że: tytuł wydaje się robić coś złego (patrz poniżej: ale skupię się na tym później), główna rzecz, którą chcę teraz zrobić, jest uruchomiona każdą tablicę i zapisz ją jako nowy wpis.
Dziennik:
Parameters: {"utf8"=>"â", "authenticity_token"=>"BQXm5fngW27z/3Wxy9qEzu6D8/g9YQIfBL+mFKVplgE=", "event_id"=>"7", "registrations"=>[{"title"=>{"registration"=>"Mrs"}, "first_name"=>"Person", "last_name"=>"One", "email"=>"[email protected]"...
Mam nadzieję, że informacje, które podałem, są wystarczające, każda rada zostanie doceniona.
Dzięki!
EDYTOWAĆ:
@blue
To załatwiło sprawę! To był błąd sprawdzania poprawności i zapisuje wszystko w różnych wierszach. Dziękuję Ci bardzo!
Jeszcze jedno, jeśli mogę, jakikolwiek pomysł, w jaki sposób część formularza powinna być sformatowana, aby powrócić paramater:
"title"=>"Mrs",
w przeciwieństwie do:
"registrations"=>[{"title"=>{"registration"=>"Mrs"},
Dzięki jeszcze raz!