我的产品型号中有以下类方法,用于计算购物篮中的总价格:
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
未定义。
答案 0 :(得分:0)
您看到此错误,因为模型中没有方法或局部变量basket
。所以,要么:
a)定义一个返回篮子对象的方法:
def basket
# some logic here to return basket.
end
b)将篮子传递给你的方法:
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)