2010-03-09 8 views
7

so habe ich viele Controller und viele Ansichten.wie man eine Variable in allen Ansichten gesehen - Schienen

ich möchte, dass meine Variable @random_quote jedes Mal ausgewertet wird, wenn eine Ansicht geladen wird.

Ich habe mehrere Dinge in Application Controller versucht (ich dachte, es sollte hier sein?), Aber keiner von ihnen funktionierte.

so wie verbinde ich diese beiden: @random_quote.body (in view) und

@random_quote = Quote.find(:random) (in der Steuerung oder?)

durch alle meine Anwendung zu sehen Biene?

Vielen Dank für Ihre Antworten!

Antwort

13

Ich bezweifle, dass Sie es tatsächlich in allen Ansichten zugänglich sein müssen. Aber Sie können @random_quote = Quote.find(:random) unter eine Methode setzen, die mit einem before_filter in Ihrem ApplicationController aufgerufen wird. Es wird dann überall zugänglich sein.

Wie so:

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

es so funktioniert danke. Ich erkannte auch, dass ich es auch in Application Controller (ohne vorher Filter) setzen kann. Was ist eigentlich der Unterschied? Ist es besser, es in Helfer zu stecken? Danke noch einmal! – user275447

+0

Ich nahm an, Sie wollten das Angebot einmal pro Seite anzeigen. Wenn Sie jedes Mal ein neues Angebot wünschen, brauchen Sie das before_filter nicht. –

Verwandte Themen