2011-12-20 3 views
0

나는 설정 클래스 변수는

class MyController < ApplicationController 

    def firstMethod 
     @obj = #get friends list from FB 
    end 

    def secondMethod 
    puts @obj 
    end 
end 

그래서/내/firstMethod에, 내가

<%= link_to "Likes","/my/secondMethod" %> 

이 방법은 호출되고 페이지가 렌더링되지만 "@obj두고있다

컨트롤러 클래스를이 "빈 칸으로 표시하십시오.

나는 하나의 방법은 before_filter을 사용하는 것이지만, 그 값 비싼 작업은 친구 목록을 한 번만 가져오고 싶다는 것을 알고 있습니다.

모든 포인터?

하샬

+0

클래스 변수 ('@@ obj')를 사용할 수 있지만 프로파일 링을 통해 이것이 성능 병목임을 확인하지 않은 경우 ** before_filter **를 고수해야합니다. 또한 Rails에는 [캐싱] (http://guides.rubyonrails.org/caching_with_rails.html)이있어 친구 목록보다 훨씬 많은 정보를 캐시 할 수 있습니다. 또한 개발 모드에서 컨트롤러는 요청마다 다시로드되므로 캐시로만 @@ obj를 사용할 수 있습니다. –

+0

@Niklas 클래스 변수가 한 요청 시간 동안 만 유효합니까? –

+0

@ NicolasGUILLAUME : 예, 방금 테스트했습니다. 물론 개발 모드 일뿐입니다. 캐시에 저장하는 –

답변

2

필자는 before_filter를 사용하여 결과를 캐시에 저장합니다.

또한 세션을 사용하여 친구 목록을 저장할 수 있지만 저장된 목록의 길이가 조절 된 경우를 제외하고는이를 피할 수 있습니다.

+0

은 세션 크기보다 훨씬 큽니다. – harshit