数量计数问题

时间:2014-08-06 22:42:04

标签: ruby-on-rails ruby

电子商务应用的数量问题。当一个产品被添加到购物车时,购物车显示"产品",当添加另一个相同的产品时,它显示" 1产品"。所以,2 = 1。显然,我是红宝石的新人。如何在数量时包含适当的计数> 1?

def add_product(product_id)
  current_item = line_items.find_by(product_id: product_id)
  if current_item
    current_item.increment(:quantity)
  else
    current_item = line_items.build(product_id: product_id)
  end
  current_item
end

感谢。

1 个答案:

答案 0 :(得分:1)

显然,当您开始使用第一个项目时,quantitynil。您必须将其设置为1。这样的事情应该有效:

current_item = line_items.build(product_id: product_id, quantity: 1)

所以,你的方法看起来像这样:

def add_product(product_id)
  current_item = line_items.find_by(product_id: product_id)
  if current_item
    current_item.increment(:quantity)
  else
    current_item = line_items.build(product_id: product_id, quantity: 1)
  end
  current_item
end

顺便说一句,您可以使用find_or_initialize_by将代码缩短为一行:

def add_product(product_id)
  line_items.find_or_initialize_by(product_id: product_id).increment(:quantity)
end