2011-08-19 2 views
0

私は私の "msg.rb" にのRails 3:

def average_rating 
     @value = 0 
     self.ratings.each do |rating| 
      @value = @value + rating.value 
     end 
     @total = self.ratings.size 
     @value.to_f/@total.to_f 
    end 

を入れて、ビューホーム/ _msgs_listに

<div id="avg_rating"> 
     <%= @msg.average_rating %> 
    </div> 

を置く: "NilClass nilのための未定義のメソッド` AVERAGE_RATING」" を取得.html.erb

私はdef average_ratingメソッドがどのように機能するのか完全に理解していません(hereからコードをコピーしました)ので、nil:nilclassに対してnomethoderrorを取得しています。誰かが助けてくれますか?ありがとう。

+0

あなたは[要旨](https://gist.github.com/)スタックトレースできますか? – Oleander

答えて

1

あなたの問題は、(必ずしも)average_ratingではありません。それは@msgが全く定義されていないということです!

は、あなたのビューのためのコントローラが正しく@msgを定義していることを確認します。

<%= @msg.try(:average_rating) %> 

または単純if声明:あなたは@msgがまたは存在しない場合があります(これが起こることになっている)状況を持っている場合は、あなたのような何かをすることでエラーを回避することができます

<%= @msg.average_rating if @msg %>