我如何追加一些值到一个实例变量在ruby on rails



这是我试图在我的主控制器中做的:

def view
    @product= Product.find(params[:id])
    rand_price = rand(202- @product.price.to_i) + @product.price.to_i
    old_price = rand_price + @product.price.to_i
    @product << old_price  #error line
end

我想在我的变量中添加一个old_price的值,而不为Product模型添加相同的列。错误是:

undefined method `<<' for #<Product:0x7f1362cc5b88>


使用序列化器在模型:

class Product << ActiveRecord::Base
  serialize :prices, Array
  ...
end

列产品。数据库中的价格应该是字符串。

And in controller

def update
  @product= Product.find(params[:id])
  rand_price = rand(202- @product.price.to_i) + @product.price.to_i
  new_price = rand_price + @product.price.to_i
  @product.prices << new_price
  @product.save!
end

你可以这样用:

  @product.prices # => array of all prices.
  @product.prices.last # => current price

你可以说

class << @product
  attr_accessor :old_price
end
@product.old_price = old_price

将属性注入到实例变量中。

<<的方式,你是指它添加一个值到一个数组,这不是你想要做的。

另一种选择是添加:

attr_accessor :old_price

到您的Product模型。这样可以将old_price添加到Product的所有实例中,而不需要将其作为表中的字段。

错误,因为@product是Product对象而不是Array。

& lt; & lt;使用数组对象

和Ruby不允许通过这种方式添加属性(像Javascript)。

你应该声明一个'old_price'的attr_accessor

相关内容

  • 没有找到相关文章

最新更新