Rails 3:获取“未定义的方法‘average_ rating’”对于 nil:NilClass”

发布于 2024-11-30 04:26:08 字数 654 浏览 2 评论 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

我不完全理解 defaverage_ rating 方法的工作原理(我从 这里),所以我得到 nil:nilclass 的 nomethoderror。有人可以帮忙吗?谢谢。

I put

  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

in my "msg.rb" and put

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

in the view home/_msgs_list.html.erb

I dont fully understand how the def average_rating method works (I copied the code from here), so I am getting a nomethoderror for nil:nilclass. Can someone please help? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不羁少年 2024-12-07 04:26:08

您的问题(不一定)不在于 average_ rating。这是 @msg 根本没有定义!

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

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

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

或简单的 if 声明:

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

Your problem isn't (necessarily) with average_rating. It's that @msg isn't defined at all!

Make sure the controller for your view is defining your @msg properly.

If you have a situation where the @msg might or might not exist (and this is supposed to happen), you can avoid the error by doing something like:

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

or a simple if statement:

<%= @msg.average_rating if @msg %>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文