Ruby on Rails:从视图中调用特定模型上的控制器方法

时间:2016-05-28 16:03:27

标签: ruby ruby-on-rails-4 view model controller

我是Ruby和Rails的新手。 我有一个显示课程列表的视图。

<% if defined?@offerings %>
   .....
<% @offerings.each do |offering| %>
    <tr>
      <td><%=offering.semester %></td>
      <td><%=offering.location %></td>
    </tr>
  <%end %>

我需要添加与每个产品相关联的注册按钮。此注册按钮应调用产品控制器方法,该方法递减特定产品容量属性。

如何将每个按钮绑定到各自的产品?或者,我如何将正确的产品作为参数传递给控制器​​方法?

2 个答案:

答案 0 :(得分:0)

添加另一个<td>,如下所示:

<td><%= link_to "Enroll", your_method_path(offering) %></td>

答案 1 :(得分:0)

您可以使用button_to方法,默认情况下会提交POST请求,如下所示:

<td><%= button_to "Enroll", enroll_offering_path(offering) %></td>

enroll_offering_path工作,您需要:

  • PUT /offerings/:id/enroll路线:

    # config/routes.rb`
    
    resources :offerings do
      post 'enroll', on: :member
    end
    
  • #enroll控制器操作:

    # app/controllers/offerings_controller.rb
    
    class OfferingsController < ApplicationController
      ...
      def enroll
        # Here you would do something like...
        @offering = Offering.find(params[:id])
        @offering.decrement!(:capacity)
      end
    end
    

您可以详细了解所有这些内容的工作原理here