複数のフォームを送信する必要があります。この投稿のアドバイスに従いました: Rails の同じページから複数の重複したフォームを送信する方法 - できれば 1 つのボタンを使用する
私はまだ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
送信すると、ある程度正しいことをしているように見えます.1つは、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
それはトリックをしました!これは検証エラーであり、すべてを別の行に保存しています。どうもありがとうございました!
もう 1 つ、パラメーターを返すために :title フォーム部分をどのようにフォーマットする必要があるかについて考えてみましょう。
"title"=>"Mrs",
とは対照的に:
"registrations"=>[{"title"=>{"registration"=>"Mrs"},
再度、感謝します!