1

今、ユーザがcollection_selectからオプションを選択すると、divは選択したevent_idに基づいて設定されます。 Eventに応じて、それぞれ固有のIDを持つ複数のEventOptionが表示されます。 (私はそれらのそれぞれのhas_manyEventbelongs_toとしてEventOptionを持っています。)Railsでボタンをクリックしたときのパラメータの受け渡し

これは、彼らがEventを選択したときに、私はJS/Ajaxを経由して移入したものです:

<div class="center" > 
    <h2>Available Options for "<%= @event.name %>":</h2> 
    <% @event.event_options.each do |e| %> 
     <p><strong>Name:</strong> <%= e.name %> </p> 
     <p><strong>Description:</strong> <%= e.description %></p> 
     <p><strong>Price:</strong> <%= e.price %></p> 
</div> 

<div class = "center row"> 
    <div class = "col-xs-6"> 
     <%= link_to "Check Available Dates", root_path, :class => "button", :id => "available-dates-button" %> 
    </div> 
    <div class = "col-xs-6"> 
    <%= link_to "Book This Event Now!", book_now_path(:event => @event.id), :id => "book-now-button", :class => "button" %> 

    </div>  
     <hr> 
    <% end %> 
</div> 

を私の問題は、私が渡すことができるということです彼らがBook This Event Now!をクリックするとevent_idが、私が必要とするものではありません。 :event_optionの具体的な:idが渡される必要があります。反復処理から取得する方法がわかりません。.each私はそれが原因です。

私のbook_now_pathに続くボタンの各反復で、予約を完了するために使用できる一意のIDがあることを確認するにはどうすればよいですか?

答えて

3

book_now_pathヘルパーにevent_option.idを追加するだけです。

book_now_path(:event => @event.id, :event_option_id => e.id) 

そして、それはのparamsになりますコントローラのアクションで:

@event_option_id = params[:event_option_id] 

あなたは単純にキーと値としてそれらの名前と値を追加することによって、Railsのルートヘルパーに任意のパラメータを追加することができますヘルパーメソッドのオプション。

+0

これはあまりにも多くの意味があります!ありがとうございました!そして、私は@event_option_idを私のフォームに渡して、必要な他の列を呼び出すことができるでしょうか? – GeekFitness

+0

@ GeekFitness、私は 'book_now'アクションからのビューのフォームを意味すると思います。 –

+0

'book_now.html.erb'で' @ event_option_id'をテストするとき、私は何の価値も得られません。私のサーバログに 'Parameters:{" event "=" "4"、 "event_option_id" => "5"} 'を表示していますが、' <%= @event_option_id%> 'を使用しようとすると、私が.to_iとしてテストしたとき、 '5'の代わりに' 0'を示しました。何か案が? – GeekFitness

関連する問題