【问题标题】:Rails 3, add a link_to to add a product id to a session variableRails 3,添加一个link_to以将产品ID添加到会话变量
【发布时间】:2014-11-03 09:27:44
【问题描述】:

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

任何帮助表示赞赏。

【问题讨论】:

  • 发布您的routes.rbrake routes
  • 您的控制器操作拼写为“add_to_card”,而 link_to 指向操作“add_to_cart”。

标签: ruby-on-rails


【解决方案1】:

在您的路线中(假设您正在使用产品的资源路线)(请注意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

【讨论】:

  • 这是我的路线:pastie.org/9692381。单击链接时,我收到错误 No route matches [GET] "/products/1/add_to_cart"。
猜你喜欢
  • 2014-01-08
  • 1970-01-01
  • 2018-12-07
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
相关资源
最近更新 更多