2

複数のフォームを送信する必要があります。この投稿のアドバイスに従いました: 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"},

再度、感謝します!

4

1 に答える 1

0

@registration.save実際にレコードを保存するかどうかを確認していません。trueまたはを返すことができfalseます。黙って失敗するだけだと思います。

を使用する@registration.save!と、何か問題が発生したときに例外が発生します。そこに何らかの検証エラーがあると思います。

于 2012-07-02T19:38:45.397 に答える