Неопределенный метод или локальная переменная с активным продавцом

У меня есть следующий метод класса в моей модели продукта, который вычисляет общую цену в корзине:

def self.total_basket_price(basket)
    where(id: basket.to_a).sum(:price)
end

И у меня есть это в моем представлении:

<%= number_to_currency(Product.total_basket_price(basket)) %>

Оба работают, как и ожидалось, пока я не попытаюсь реализовать метод покупки в моей модели заказа:

def purchase
response = GATEWAY.purchase(Product.total_basket_price(basket), credit_card, purchase_options)                                   
end

Он выдает undefined local variable or method вместо (basket) выше.

Я не понимаю, почему basket не определено.


person Robbo    schedule 05.05.2014    source источник


Ответы (1)


Вы видите эту ошибку, потому что в вашей модели нет метода или локальной переменной basket. Итак, либо:

а) Определите метод, который возвращает объект корзины:

def basket
  # some logic here to return basket.
end

б) Передайте в корзину своему методу:

def purchase(basket)
  response = GATEWAY.purchase(Product.total_basket_price(basket), credit_card, purchase_options)                                   
end

c) Или, если вы работаете с экземпляром Basket, передайте экземпляр как self вместо basket.

  response = GATEWAY.purchase(Product.total_basket_price(self), credit_card, purchase_options)                                   
person Mohamad    schedule 05.05.2014