0

我放

  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

在我的“msg.rb”中并放

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

在视图 home/_msgs_list.html.erb

我不完全理解 def average_rating 方法的工作原理(我从这里复制了代码),所以我得到了 nil:nilclass 的 nomethoderror。有人可以帮忙吗?谢谢。

4

1 回答 1

1

您的问题(不一定)与average_rating. 根本@msg就没有定义!

确保您的视图的控制器正确定义了您的视图@msg

如果您遇到@msg可能存在或可能不存在的情况(这应该发生),您可以通过执行以下操作来避免错误:

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

或一个简单的if陈述:

<%= @msg.average_rating if @msg %>
于 2011-08-19T09:54:09.920 回答