2011-12-28 11 views
0

:ビューAに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を取得します。私は予期しないエラーが予想されます:

[1, 2, 3, 4, 5] 

私のモデルメソッドには何が問題なのですか?なぜ、各pakkeに値を追加する配列を作成できないのですか?

答えて

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

@pprisは決してnilになりません。それはempty?になりますが、nilにはなりません。あなたのコメント

アドレッシング

あなたは新しい配列にあなたがメソッドを呼び出すたびに作成します。 1つの配列をインスタンスに関連付ける場合は、after_initialize callbackに配列を作成します。おそらく、この欲しい

+0

を私はそれを変えたが、それでもcompany.pprisているだけである[1]各企業のために私はそれがあることを期待する、[1、2、3、4、5] –

+0

@Railsbeginnerメソッドを呼び出すたびに、新しい '@ ppris'を作成するためです。 –

+0

毎回新しい「@ppris」を作成しないでください。私はメソッドを作成して毎回新しい '@ppris'を作成したくないのですか? –

0

def last(x) 
    @ppris = [] 
    if @ppris.empty? 
    @ppris << 1 
    else 
    @ppris << @ppris.last + 1 
    end 
end 
関連する問題