2011-08-19 15 views
0

내 "msg.rb"에레일 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 전무에 대한 정의되지 않은 메서드`AVERAGE_RATING '을"점점 .html.erb

def average_rating 메서드가 어떻게 동작하는지 (완전히 here의 코드를 복사했는지) 완전히 이해할 수 없으므로 nill : nilclass에 nomethoderror가 표시됩니다. 누군가 제발 도와 줄 수 있니? 감사.

+0

스택 추적을 [gist] (https://gist.github.com/) 할 수 있습니까? – Oleander

답변

1

문제가 (반드시) average_rating이 아닙니다. @msg이 전혀 정의되어 있지 않습니다.

보기 용 컨트롤러가 @msg을 올바르게 정의하고 있는지 확인하십시오.

당신은 @msg이 존재하거나 존재하지 않을 수도 있습니다 (이이 일 것으로 예상되는) 상황, 당신이 좋아하는 무언가를 수행하여 오류를 방지 할 수있는 경우 :

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

또는 간단한 if 문 :

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