Rails 3,添加link_to以将产品ID添加到会话变量

时间:2014-11-03 00:33:22

标签: ruby-on-rails

我有一个简单的应用程序,其中包含具有名称和价格属性的单一型号产品。除了索引视图中的标准脚手架操作之外,我还想添加一个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行不正确。

任何帮助表示感谢。

1 个答案:

答案 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