在Rails中单击按钮时传递参数

时间:2016-08-19 19:59:51

标签: ruby-on-rails ruby model-view-controller parameter-passing ruby-on-rails-5

现在,我已经拥有它,以便当用户从collection_select中选择一个选项时,会根据他们选择的event_id填充div。根据{{​​1}},会显示多个Event,每个EventOption都有自己唯一的ID。 (我EventOption belongs_toEvent has_many,其中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>

这是我在选择event_id时通过JS / Ajax填充的内容:

Book This Event Now!

我的问题是,当我们点击:id时我可以通过:event_option,但这不是我需要的。我需要传递.each的具体book_now_path,而且我不知道如何从迭代的widget.js中获取它。我来自它。

如何确保我的componentHandler.upgradeDom();后面的按钮的每次迭代都有一个我可以用来完成预订的唯一ID?

1 个答案:

答案 0 :(得分:3)

只需将event_option.id添加到book_now_path帮助器即可。

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

然后在控制器动作中,它将在params:

@event_option_id = params[:event_option_id]

您可以将任何其他参数添加到Rails路由助手中,只需将其名称和值作为键和值添加到助手方法的选项中即可。