1

Im Augenblick habe ich es so, dass, wenn Benutzer eine Option aus collection_select wählen, ein div wird basierend auf der event_id ihrer Wahl bestückt. Abhängig von der Event, wird es mehrere EventOption gezeigt, jede mit ihren eigenen eindeutigen IDs. (Ich habe EventOption als belongs_toEvent, von denen jeder has_many von ihnen.)Übergeben von Parametern auf Schaltfläche klicken in Rails

Dies ist, was ich über JS/Ajax haben bevölkern, wenn sie wählen eine Event:

<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> 

Mein Problem ist, dass ich weitergeben kann die event_id, wenn sie auf die Book This Event Now! klicken, aber das ist nicht was ich brauche. Ich brauche die spezifische :id der :event_option übergeben werden, und ich weiß nicht, wie man es von der iterierten .each Ich komme aus.

Wie kann ich sicherstellen, dass jede Iteration einer Schaltfläche, die auf meine book_now_path folgt, über eine eindeutige ID verfügt, mit der ich ihre Reservierung abschließen kann?

Antwort

3

Fügen Sie einfach die event_option.id zu Ihrem book_now_path Helfer hinzu.

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

Dann in der Controller-Aktion wird es in den params sein:

@event_option_id = params[:event_option_id] 

Sie zusätzliche Parameter zu den Helfern Routen Rails hinzufügen können einfach durch ihre Namen und Werte als Schlüssel hinzufügen und Werte der Hilfsmethode Optionen.

+0

Das macht völlig zu viel Sinn! Vielen Dank! Und ich werde @event_option_id in meine Formulare eingeben können, um die anderen Spalten zu nennen, die ich brauche, nehme ich an? – GeekFitness

+0

@GeekFitness, ich nehme an, du meinst Formen in den Ansichten von der 'book_now' Aktion, also ja. –

+0

Beim Testen von '@ event_option_id' in' book_now.html.erb' bekomme ich immer keinen Wert mehr. Es wird in meinen Serverprotokollen als 'Parameter: {" event "=>" 4 "," event_option_id "=>" 5 "} angezeigt, aber wenn ich versuche,' <% = @event_option_id%> 'zu verwenden, wird es leer angezeigt , und als ich es gerade als .to_i getestet habe, zeigte es "0" anstelle von "5". Irgendeine Idee? – GeekFitness

Verwandte Themen