Rails模型如何根据最后一个值创建一个数组?

时间:2011-12-28 02:00:53

标签: ruby-on-rails ruby ruby-on-rails-3

在我的模特中,我有:

attr_accessor :ppris

def last(x)
    @ppris = []

    if @ppris == nil
        @ppris << 1
    else
        @ppris << 2
    end
end

def pakke
  if self.pakkes.count > 0
  self.pakkes.each{|pakke| beregn_pakke(pakke.price)}
  end
end

在视图中,我的公司模型有一个正常的循环。

<%= company.ppris %>

在视图中,对于所有行,ppris的值为[2]

我的表格中有5个公司行。我希望ppris的价值是: 每个公司[1, 2, 2, 2, 2]

我还将模型方法更改为:

def last(x)
@ppris = []
if @ppris == nil
@ppris << 1
else
@ppris << @ppris.last + 1
end
end

然后我得到NoM​​ethodError。我希望没有错误可能是:

[1, 2, 3, 4, 5]

我的模型方法有什么问题?为什么我不能创建一个为每个pakke添加值的数组?

2 个答案:

答案 0 :(得分:1)

@ppris = []
if @ppris == nil

@ppris永远不会是nil。它将是empty?,但不是nil

发表评论

每次调用方法时都会创建一个新数组。如果您想要一个与实例关联的单个数组,请在after_initialize callback

中创建一个

答案 1 :(得分:0)

你可能想要这个:

def last(x)
  @ppris = []
  if @ppris.empty?
    @ppris << 1
  else
    @ppris << @ppris.last + 1
  end
end