【问题标题】:Quantity count issue数量统计问题
【发布时间】:2014-08-06 22:42:03
【问题描述】:

电子商务应用的数量计数存在问题。当一个产品添加到购物车时,购物车显示“产品”,当添加另一个相同的产品时,它显示“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

谢谢。

【问题讨论】:

  • 您使用什么代码来尝试计算项目数?
  • @JustinWood,要知道订单项的数量,您可以查看current_item.quantity。 quantity 只是LineItem 的一个属性。为此,它需要正确初始化、递增和递减。

标签: ruby-on-rails ruby


【解决方案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

【讨论】:

  • 请提供您的反对意见反馈。谢谢。
  • Downvote 不是来自我,您的解决方案有效。谢谢@Mischa。
  • @alex 我添加了一个改进你的代码的建议。
猜你喜欢
  • 2010-12-21
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 2013-01-22
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多