1

您好我尝试从我的控制器调用我的模型的方法,但是当尝试实例时出现此错误:

NoMethodError (undefined method `products=' for #<Class:0x114bc4c50>):
  app/controllers/carts_controller.rb:57:in `calculate_ship'

模型.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

错误在第一行我不明白因为什么,请有人可以帮助我吗?

4

1 回答 1

2

如果在with中product定义,则属于 的实例。类不能以. 所以你的代码需要这样说:Cartattr_accessor :productproductCartCart.product

my_cart.product = buy_cart.line_items

您可以将其定义为类方法,如下所示:

class Cart...
  ...

  self.product=( prod )
    @product = prod
  end

  self.product
    @product
  end

  ...
end

然后像Cart.product = something应该工作的参考。

于 2013-06-07T23:24:15.267 回答