首页 > 解决方案 > 如何在狂欢中获得购物车订单项?

问题描述

我需要帮助来获取添加到购物车中的所有物品。我实际上显示了添加到购物车中的每种产品的数量。我试过 current_order 但它的行为很奇怪,有时它是正确的,但有时即使购物车是空的,它也会在 current_order 中显示产品,所以如果购物车更新它就会中断。你们能推荐我一种直接获取购物车物品的方法吗?

更新

在视图中

<% count = count_in_cart(simple_current_order, product) %>
<span class="badge badge-notify rounded-bottom"><%=count%></span>

在应用程序助手中

def count_in_cart(current_order, product)
  return 0 unless current_order
  product = current_order.line_items.select{|item| item.variant_id ==product.id}.last
  product.present? ? product.quantity : 0
end

它在本地就像一个魅力,但在 heroku 上它没有显示计数。有人可以指导我做错了什么吗?

大礼包版本是 3.7.2

标签: ruby-on-railsspree

解决方案


问题在于您的 count_in_cart 函数。您编写的函数获取最后一个 line_item 的数量,但是您真正想要的是按产品计数。

def count_in_cart(current_order, product)
  current_order.where(product: product).to_a.sum(&:quantity)
end

推荐阅读