2010-11-20 14 views
7

사용자가 로그인 한 후 자동으로 이전 위치로 리디렉션하면 좋지만 결코 발생하지 않을 것입니다. 항상 루트 위치로 리디렉션됩니다. 이것에 대해 궁금해하는 문서를 읽는 것부터이 기능이 제대로 작동하는 것 같습니다. 어떻게 든 잘못 사용하고 있습니까? 그리고/또는 어떻게 위치를 저장하고 관계없이 리디렉션 할 수 있습니까?dev_sign_in_and_redirect가 작동하지 않는 것 같습니다.

http://rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers#stored_location_for-instance_method

authentication = UserToken.find_by_provider_and_uid(omniauth['provider'], omniauth['uid']) 

if authentication 
    flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => omniauth['provider'] 
    sign_in_and_redirect(:user, authentication.user) 
else 
+0

나는 authorize_user를 사용하지 않기 때문에 기본 기능을 얻지 못한다는 것을 깨달았습니다! 위치를 저장하는 콜백 ... 어떻게 수동으로 위치를 만들 수 있습니까? – holden

+0

어떻게 그걸 해결 했나요? Devise와 함께 3.2.5 버전의 레일즈 용 페이스 북 로그인을 통합하기 위해 https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview를 따르고 있습니다. sign_in_and_redirect 메서드가 작동하지 않습니다. ( – asitmoharna

+0

동일한 문제가 발생했습니다. 수동 sign_in 및 별도 리디렉션을 수행했습니다. sign_in_and_redirect의 소스 코드를 확인하십시오. sign_in @user redirect_to root_path – MatthewFord

답변

4

this Google group page의 맨 아래로 스크롤 및 방법을 고안 'stored_location_for'는 무시 확인하십시오. 수동으로 'redirect_to'PARAM를 전달하여 위치를 만들 수 있도록해야

def stored_location_for(resource) 
    if current_user && params[:redirect_to] 
     flash[:notice] = "Congratulations, you're signed up!" 
     return params[:redirect_to] 
    end 
    super(resource) 
    end 

: I는 다음과 같습니다 내 application_controller에의 적응 버전이있다.

관련 문제