2010-08-18 4 views
3

Je reçois l'erreur suivante:Rails variable charge la première fois, puis est nul!

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 %> 

La chose étrange est que lorsque la page d'index est chargé la première fois alors il n'y a aucun problème. Lorsque je me rafraîchis, j'obtiens l'erreur ci-dessus.

Le contrôleur ressemble à ceci:

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

Est-il quelque chose à voir avec la mise en cache? Ou utilise-t-il trop de mémoire? Si oui, puis-je charger le nom d'utilisateur d'une autre manière peut-être? Je suis confus!

+0

montrer votre action du contrôleur ici – Bohdan

+0

l'action contrôleur ajouté au-dessus – amaseuk

+4

Essayez désireux de charger les utilisateurs en ajoutant « : include =>: user "dans votre recherche (Achievement.find (: all,: include =>: user) –

Répondre

2

Essayez désireux de charger les utilisateurs en ajoutant « : include =>: l'utilisateur » dans votre trouvaille:

class IndexController < ApplicationController 
    def index 
     @achievements = Achievement.find(:all, :include => :user) 
    end 
end 
Questions connexes