您好我尝试从我的控制器调用我的模型的方法,但是当尝试实例时会收到此错误:
NoMethodError (undefined method `products=' for #<Class:0x114bc4c50>):
app/controllers/carts_controller.rb:57:in `calculate_ship'
model.rb
def self.make_pack
products.each do |p|
p.product.length = 16 if p.product.blank?
p.product.weight = 0.3 if p.product.blank?
p.product.width = 11 if p.product.blank?
p.product.height = 6 if p.product.blank?
@item = Correios::Frete::PacoteItem.new :peso => p.product.weight, :comprimento => p.product.length, :largura => p.product.width, :altura => p.product.height
while p.quantity > 0
pacote.add_item(@item)
p.quantity -= 1
end
end
end
当我打电话时这是方法:
Cart.products = buy_cart.line_items
Cart.make_pack
错误是在第一行,我不承担,因为什么,请有人可以帮助我?
答案 0 :(得分:2)
如果product
中使用Cart
定义attr_accessor :product
,则product
属于Cart
的实例。它不能被类Cart.product
访问。所以你的代码需要说:
my_cart.product = buy_cart.line_items
您可以将其定义为类方法,如下所示:
class Cart...
...
self.product=( prod )
@product = prod
end
self.product
@product
end
...
end
然后Cart.product = something
之类的引用应该有用。