我有一个简单的应用程序,其中包含具有名称和价格属性的单一型号产品。除了索引视图中的标准脚手架操作之外,我还想添加一个link_to动作'add_to_cart',它将向会话变量添加产品ID。到目前为止,我有......
index.html.erb
<% @products.each do |product| %>
<tr>
<td><%= product.name %></td>
<td><%= product.price %></td>
<td><%= link_to 'Show', product %></td>
<td><%= link_to 'Edit', edit_product_path(product) %></td>
<td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<td><%= link_to "Add to Cart", :controller => 'product', :action => 'add_to_cart' %></td>
</tr>
<% end %>
</table>
控制器
def add_to_cart
#add my session here
end
我不确定应该添加哪条路线才能使其正常工作。我也有一种感觉,我的link_to行不正确。
任何帮助表示感谢。
答案 0 :(得分:0)
在您的路线中(假设您正在使用产品的资源路线)(请注意put
,因为您正在更改状态):
# routes.rb
resources :products do
member do
put :add_to_cart
end
end
然后,您在视图中的链接将是:
<%= link_to "Add to Cart", add_to_cart_product_path(product), :method => :put %>
另外,修复控制器操作的拼写:
def add_to_cart
...
end