2011-12-04 4 views
0

안녕하세요, 나는 여기에 연결된 필터를 수행하는 방법을 잘 모르겠습니다. 여기 그것이 정상적인 웹 사이트로 리디렉션됩니다 모바일 장치 아니다 나는 사용자가 로그인되어 있는지 확인하고 싶은 경우에 나는 :prepare_for_mobile 이후 원하는 것은 내 코드레일 3 before_filter 모바일 장치를 확인한 후

before_filter :prepare_for_mobile 
    protect_from_forgery 

    private 

    def mobile_device? 
    request.user_agent =~ /Mobile|webOS/ 
    end 
    helper_method :mobile_device? 

    def prepare_for_mobile 
    request.format = :mobile if mobile_device? 
    end 

입니다. 모바일 버전에서 어떤 사용자는 것입니다 로그인해야합니다.

일반 웹 사이트에서는 :except 특정 컨트롤러도 사용하고 싶습니다.

어떻게하면됩니까?

고마워요.

답변

1

음, 몇 가지 .... Railscasts.com here에서 솔루션을 부분적으로 구현하는 것처럼 보입니다 (세션 매개 변수를 설정하지 않고서 만 시도하고있는 중입니까?).

필터를 '묶을 필요는 없습니다. 다른 두 함수를 원하는 순서대로 호출하는 새 함수 (예 : get_ready)를 만든 다음 필터로 만듭니다. 모바일을 기반으로 한 사이트 내에서 동작을 분기 할 경우

before_filter :get_ready 
protect_from_forgery 

private 

def get_ready 
    prepare_for_mobile 
    the_other_thing_you_want_to_chain 
end 

def mobile_device? 
    request.user_agent =~ /Mobile|webOS/ 
end 
helper_method :mobile_device? 

def prepare_for_mobile 
    request.format = :mobile if mobile_device? 
end 

def the_other_thing_you_want_to_chain 
    do_something unless mobile_device? 
end 

, 당신은 경로, 또는 둘 모두에서, 컨트롤러에서 그렇게해야합니다. 나는 당신의 질문에 대답하기를 바랍니다.

관련 문제