具有活动商家的未定义方法或局部变量

时间:2014-05-05 23:27:59

标签: ruby-on-rails activemerchant

我的产品型号中有以下类方法,用于计算购物篮中的总价格:

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未定义。

1 个答案:

答案 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)