3

我收到以下错误:

ActionView::TemplateError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.include?) on line #24 of app/views/index/index.html.erb:
21: <% @achievements.each do |achievement| %>
22:     <%= achievement.name %>
23:     <%= achievement.level %>
24:     by <%= achievement.user.username %><br/>
25: <% end %>

奇怪的是,第一次加载索引页面时,没有任何问题。当我刷新时,我收到上面的错误。

控制器如下所示:

class IndexController < ApplicationController
    def index
        @achievements = Achievement.find(:all)
    end
end

它与缓存有关吗?还是它使用了太多的内存?如果是这样,我可以用另一种方式加载用户名吗?我很困惑!

4

1 回答 1

2

尝试通过在你的 find 中添加 ":include => :user" 来预先加载用户:

class IndexController < ApplicationController
    def index
        @achievements = Achievement.find(:all, :include => :user)
    end
end
于 2010-08-18T17:10:41.553 回答