我是Ruby和Rails的新手。 我有一个显示课程列表的视图。
<% if defined?@offerings %>
.....
<% @offerings.each do |offering| %>
<tr>
<td><%=offering.semester %></td>
<td><%=offering.location %></td>
</tr>
<%end %>
我需要添加与每个产品相关联的注册按钮。此注册按钮应调用产品控制器方法,该方法递减特定产品容量属性。
如何将每个按钮绑定到各自的产品?或者,我如何将正确的产品作为参数传递给控制器方法?
答案 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。