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 に答える