向商店索引添加数量选项

时间:2014-06-13 04:50:51

标签: ruby-on-rails ruby

我有一个我正在建造的RoR定制商店,我只想尝试一些花里胡哨的东西。我有我的产品型号,哪个产品#index作为我商店的根...每个产品都有一个添加到购物车按钮。单击“添加到购物车”时,将创建一个包含数量(1)的line_item。看起来像这样。

<% @products.each do |product| %>
     <%= link_to "#{product.title}", :action => 'show', :id => product %>
     <%= link_to(image_tag("#{product.image_url}", :size => "200x200"), product) %>
     <%= truncate product.description, length: 180 %> <%= link_to "read more", product %>
     <%= button_to 'Add to Cart', line_items_path(:product_id=> product), class: "btn btn-primary" %>
<% end %>

我想添加数量选择框。在上面的代码中,我没有使用form_for或simple_form_for。为了向创建的line_item添加数量,我必须使用form_for(对吗?)所以我添加了

  <%= simple_form_for(@line_item) do |f| %>
       <%= f.select :quantity, [1, 2, 3] %> 
          <%= f.button :submit, 'Add to Cart', line_items_path(:product_id=> product), class: "btn btn-primary" %>
  <% end %>

更新

  <%= simple_form_for(@line_item, url:line_items_path(product_id:product)) do |f| %> 

消除了参数错误......我现在的问题是数量没有更新......我知道为什么,但不确定如何修复。

根据提交按钮创建line_item时的控制器:

  def create
    @cart = current_cart
      product = Product.find(params[:product_id])
      @line_item = @cart.add_product(product.id)
  ...
  end

add_product方法只添加一个。我在cart.rb中定义的方法如下。

 def add_product(product_id)
  current_item = line_items.find_by_product_id(product_id)
   if current_item
    current_item.quantity += 1
   else
    current_item = line_items.build(:product_id => product_id)
  end
  current_item
 end

我应该废弃该方法并将quantity =声明为表单值吗?我有点生气。

2 个答案:

答案 0 :(得分:0)

请用单词

写下您的路径
<% simple_form_for @line_item, path: line_item_path(product_Id: Product.id, method: 'POST') do %>
  <%= f.select :quantity, [1, 2, 3] %> 
  <%= f.button :submit, 'Add to Cart', class: "btn btn-primary" %>
<% end %>

答案 1 :(得分:0)

尝试使用以下

<%= form_for(@line_item,url:line_items_path(product_id:product)) do |f| %>
       <%= f.select :quantity, options_for_select([1,2,3]) %> 
       <%= f.submit, 'Add to Cart', class: "btn btn-primary" %>
 <% end %>

有关表单助手的更多详细信息,请参阅http://guides.rubyonrails.org/form_helpers.html