电子商务应用的数量问题。当一个产品被添加到购物车时,购物车显示"产品",当添加另一个相同的产品时,它显示" 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
感谢。
答案 0 :(得分:1)
显然,当您开始使用第一个项目时,quantity
为nil
。您必须将其设置为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