Gee*_*ess 2 ruby model-view-controller ruby-on-rails parameter-passing ruby-on-rails-5
现在,我有了它,以便当用户从 中选择一个选项时collection_select,会根据event_id他们的选择填充一个 div 。根据Event,将显示多个EventOption,每个都有自己独特的 ID。(我有EventOptionas belongs_to Event,has_many他们中的每一个。)
当他们选择一个时,这是我通过 JS/Ajax 填充的内容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>
Run Code Online (Sandbox Code Playgroud)
我的问题是event_id当他们点击 时我可以通过Book This Event Now!,但这不是我需要的。我需要传递的具体信息:id,但:event_option我不知道如何从迭代中获取它.each。
我如何确保我后面的按钮的每次迭代book_now_path都有一个唯一的 ID,我可以用它来完成他们的预订?
只需添加event_option.id到你的book_now_path助手。
book_now_path(:event => @event.id, :event_option_id => e.id)
Run Code Online (Sandbox Code Playgroud)
然后在控制器操作中,它将在参数中:
@event_option_id = params[:event_option_id]
Run Code Online (Sandbox Code Playgroud)
您可以向 Rails 路由助手添加任何其他参数,只需将它们的名称和值作为键和值添加到助手方法的选项中即可。
| 归档时间: |
|
| 查看次数: |
3699 次 |
| 最近记录: |