2010-03-09 4 views
7

그래서 나는 많은 컨트롤러와 많은 뷰를 가지고있다.모든 뷰에서 변수를 만드는 방법 - 레일

모든보기가로드 될 때마다 @random_quote 변수를 평가하고 싶습니다.

나는 응용 프로그램 컨트롤러 (나는 여기에 있어야한다고 생각 하나?)에서 몇 가지 시도했지만 그들 중 누구도 일하지 못했습니다. @random_quote.body (in view)

@random_quote = Quote.find(:random) (컨트롤러 맞죠?)

내 모든 응용 프로그램을 통해 볼 벌하기 :

그래서 내가 어떻게이 두 가지를 연결합니까?

답장을 보내 주셔서 감사합니다.

답변

13

모든보기에서 실제로 액세스 할 수 있을지 의심 스럽습니다. 하지만 @random_quote = Quote.find(:random)을 ApplicationController에 before_filter이라는 메서드로 넣을 수 있습니다. 그러면 어디서나 액세스 할 수 있습니다. 그래서 같이

:이 방식으로 작동

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

당신을 감사합니다. 나는 또한 필터를 사용하지 않고 애플리케이션 컨트롤러에 넣을 수 있음을 깨달았다. 실제로 차이점은 무엇입니까? 그것을 도우미에 넣는 것이 낫습니까? 다시 한 번 감사드립니다! – user275447

+0

페이지 뷰 당 한 번 견적을 생성한다고 가정했습니다. 매번 새로운 인용문을 원하면 before_filter가 필요하지 않습니다. –

관련 문제