【问题标题】:Passing parameters on button click in Rails在 Rails 中单击按钮时传递参数
【发布时间】:2016-12-27 01:49:39
【问题描述】:

现在,我有它,当用户从collection_select 中选择一个选项时,会根据他们选择的event_id 填充一个 div。根据Event,将显示多个EventOption,每个都有自己唯一的ID。 (我有EventOptionbelongs_to Event,每个has_many。)

这是我在他们选择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,我可以使用它来完成他们的预订?

【问题讨论】:

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


    【解决方案1】:

    只需将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 路由助手添加任何其他参数,只需将它们的名称和值作为键和值添加到助手方法的选项中即可。

    【讨论】:

    • 这太有道理了!谢谢!我想我将能够将@event_option_id 传递到我的表单中,以便调用我需要的其他列?
    • @GeekFitness,我想您的意思是来自book_now 操作的视图中的表单,所以是的。
    • book_now.html.erb 中测试@event_option_id 时,我一直没有得到任何回报。它在我的服务器日志中显示为Parameters: {"event"=&gt;"4", "event_option_id"=&gt;"5"},但是当我尝试使用&lt;%= @event_option_id %&gt; 时它返回空白,当我将它测试为.to_i 时,它显示0 而不是5。有什么想法吗?
    • @GeekFitness,请确保将参数分配给 @event_option_id 而不是 event_option_id。否则,这真的是一个新问题。如果您想打开另一个问题并发布您的代码,我会看看。
    • 是的,它正在使用@event_option_id。这是我的第一个想法。我发布了一个新问题并进行了详细说明。太感谢了! stackoverflow.com/questions/39048592/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2011-03-13
    • 2011-01-04
    • 2012-09-01
    • 2021-10-09
    • 2021-12-27
    相关资源
    最近更新 更多