如何疯狂获取购物车订单项?

时间:2019-06-14 18:22:36

标签: ruby-on-rails spree

我需要帮助来获取添加到购物车中的所有物品。 我实际上是在显示购物车中添加的每种产品的数量。 我尝试过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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

由于对象可能存储在内存中,因此看起来好像在视图文件中有些奇怪。

我设法通过创建一个新的API并在该Controller中计算产品来对其进行修复。

@cart_items_order = simple_current_order if simple_current_order.present?
render json: @cart_items_order&.line_items

那就像一种魅力。

适用于将来需要此东西的任何人。

谢谢。