2010-03-09 7 views
7

donc j'ai beaucoup de contrôleurs et de nombreux points de vue. Je veux que ma variable @random_quote soit évaluée chaque fois que chaque vue est chargée.comment faire une variable vu dans toutes les vues - rails

J'ai essayé plusieurs choses dans le contrôleur d'application (j'ai pensé qu'il devrait être ici?) Mais aucun d'eux n'a fonctionné.

alors comment puis-je connecter ces deux: @random_quote.body (in view) et

@random_quote = Quote.find(:random) (en droit contrôleur?)

à être vu dans toute ma demande?

merci pour vos réponses!

Répondre

13

Je doute que vous ayez réellement besoin qu'il soit accessible dans toutes les vues. Mais vous pouvez mettre @random_quote = Quote.find(:random) sous une méthode qui est appelée avec un before_filter dans votre ApplicationController. Il sera alors accessible partout.

comme ceci:

before_filter :get_random_quote 
def get_random_quote 
    @random_quote = Quote.find(:random) 
end 
+0

cela fonctionne de cette façon vous remercier. J'ai aussi réalisé que je peux aussi le mettre dans le contrôleur d'application (sans filtre avant). Quelle est la différence? est-il préférable de le mettre en aide? Merci encore! – user275447

+0

J'ai supposé que vous vouliez générer la citation une fois par page. Si vous voulez une nouvelle citation à chaque fois, vous n'avez pas besoin du before_filter. –

Questions connexes