在 Rails 中单击按钮时传递参数
Passing parameters on button click in Rails
现在,当用户从 collection_select
中选择一个选项时,我会根据他们选择的 event_id
填充 div。根据 Event
,将显示多个 EventOption
,每个都有自己唯一的 ID。 (我有 EventOption
作为 belongs_to
Event
,其中每个 has_many
。)
这是我通过 JS/Ajax 填充的内容,当他们 select 一个 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>
我的问题是,当他们单击 Book This Event Now!
时,我可以通过 event_id
,但这不是我需要的。我需要传递 :event_option
的特定 :id
,但我不知道如何从迭代的 .each
中获取它。
如何确保我的 book_now_path
之后的每个按钮迭代都有一个唯一的 ID,我可以使用它来完成他们的预订?
只需将 event_option.id
添加到您的 book_now_path
助手。
book_now_path(:event => @event.id, :event_option_id => e.id)
然后在控制器动作中它将在参数中:
@event_option_id = params[:event_option_id]
您可以将任何其他参数添加到 Rails 路由助手,只需将它们的名称和值作为键和值添加到助手方法的选项即可。
现在,当用户从 collection_select
中选择一个选项时,我会根据他们选择的 event_id
填充 div。根据 Event
,将显示多个 EventOption
,每个都有自己唯一的 ID。 (我有 EventOption
作为 belongs_to
Event
,其中每个 has_many
。)
这是我通过 JS/Ajax 填充的内容,当他们 select 一个 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>
我的问题是,当他们单击 Book This Event Now!
时,我可以通过 event_id
,但这不是我需要的。我需要传递 :event_option
的特定 :id
,但我不知道如何从迭代的 .each
中获取它。
如何确保我的 book_now_path
之后的每个按钮迭代都有一个唯一的 ID,我可以使用它来完成他们的预订?
只需将 event_option.id
添加到您的 book_now_path
助手。
book_now_path(:event => @event.id, :event_option_id => e.id)
然后在控制器动作中它将在参数中:
@event_option_id = params[:event_option_id]
您可以将任何其他参数添加到 Rails 路由助手,只需将它们的名称和值作为键和值添加到助手方法的选项即可。