2014-11-03 142 views
0

我有一个简单的应用程序与产品的名称和价格属性的单一模型。除了索引视图中的标准脚手架操作之外,我想添加一个link_to操作“add_to_cart”,该操作会将产品ID添加到会话变量中。到目前为止,我有...Rails 3,添加一个link_to添加一个产品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

发表您的'routes.rb'或的r ake routes' – mohameddiaa27 2014-11-03 00:35:03

+0

您的控制器操作拼写为'add_to_card',而link_to指向操作'add_to_cart'。 – Anand 2014-11-03 01:00:10

回答

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 
+0

以下是我的路线:http://pastie.org/9692381。当我点击链接时,出现错误没有路由匹配[GET]“/ products/1/add_to_cart”。 – Lumbee 2014-11-03 01:25:00

相关问题