2011-12-28 42 views
0

在我的模型,我有:Rails模型如何基於最後一個值創建一個數組?

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 

但後來我得到一個NoMethodError。我預計ppris會沒有錯誤:

[1, 2, 3, 4, 5] 

我的模型方法有什麼問題?爲什麼我不能創建一個爲每個pakke獲取附加值的數組?

回答

1
@ppris = [] 
if @ppris == nil 

@ppris永遠不會是nil。這將是empty?,但不是nil

解決您的評論

您創建一個新的數組每次調用該方法的時間。如果您想要一個與實例關聯的陣列,請在after_initialize callback中創建一個陣列。

+0

我已經改變了,但仍然company.ppris只[1]爲每個公司我希望它是[1,2,3,4,5] – 2011-12-28 02:09:51

+0

@Railsbeginner因爲每次調用方法時都會創建一個新的'@ ppris'。 – 2011-12-28 02:11:05

+0

那麼我怎麼不每次創建一個新的@ppris呢?我可以創建一個不希望每次都創建一個新的@ppris的方法嗎? – 2011-12-28 02:13:59

0

你可能想這樣的:

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