2008-09-23 3 views
3

Disons que j'ai un widget qui affiche des informations récapitulatives sur le nombre de publications ou de commentaires que j'ai sur un site.Données de widget sur plusieurs contrôleurs

Quelle est la manière la plus propre de conserver cette information entre les contrôleurs? Y compris les variables d'instance dans le contrôleur d'application semble être une mauvaise idée. Avoir un filtre avant qui charge les données pour chaque contrôleur sent comme la duplication de code.

Dois-je utiliser un plugin comme le plugin Cells (http://cells.rubyforge.org/) ou y a-t-il une façon plus simple de le faire?

Répondre

1

Vraisemblablement, vous avez un seul partiel qui affiche cette information. Vous pouvez mettre les méthodes qui récupèrent les données dont vous avez besoin dans ApplicationHelper ou en tant que méthodes de classe sur le (s) modèle (s) dont vous obtenez les données. Ensuite, appelez cette méthode dans le partiel lorsque vous avez besoin de l'afficher.

0

Je blesse faire quelque chose de similaire à ceci:

Dans les contrôleurs/application.rb

def load_sidebar 
    @posts = Post.find(:all) 
end 

Pour inclure la barre latérale dans diverses actions que je l'ai fait:

before_filter :load_sidebar, :only => [ :index ] #load from application.rb file 

J'ai fait la barre latérale dans un partiel partagé.

0
def load_sidebar 
    @posts = Post.find(:all) 
end 

Vous avez mentionné que vous affichiez des informations de synthèse. Si vous ne voulez pas vraiment charger tous vos posts en mémoire, vous pouvez procéder comme suit.

def load_sidebar 
    @post_count = Post.count(:id) 
end 
Questions connexes