Как получить позиции в корзине? - PullRequest
1 голос
/ 14 июня 2019

Мне нужна помощь в получении всех товаров, добавленных в корзину.На самом деле я показываю количество каждого продукта, который добавлен в корзину.Я пробовал 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

Это работает как очарование в местном, но на героку это не показывает количество.Может кто-нибудь подсказать, пожалуйста, что я делаю не так?

Spree версия 3.7.2

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Похоже, что при просмотре файлов все происходило странно из-за объектов, хранящихся в памяти.

Мне удалось это исправить, создав новый API и рассчитав продукты в этом контроллере.

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

Это сработало как шарм.

Для тех, кто ищет эту вещь в будущем.

Спасибо.

0 голосов
/ 17 июня 2019

Проблема с вашей функцией count_in_cart.Функция, которую вы написали, получает количество последнего элемента line_item, однако, что вы на самом деле хотите, так это подсчитать для каждого продукта.

def count_in_cart(current_order, product)
  current_order.where(product: product).to_a.sum(&:quantity)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...