2010-11-20 13 views
7

ユーザーがログインした後、自動的に以前の場所にリダイレクトされても、これは起こりそうにないので、常にルートの場所にリダイレクトされます。このための文書を読んでから、この機能はちょうどうまくいくと思われます。私は何とかそれを間違って使用していますか、そして/または、どうやって場所を保存し、関係なくリダイレ​​クトすることができますか?devys 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

どのようにあなたはそれを解決しましたか?私はhttps://github.com/plataformatec/devise/wiki/OmniAuth:-Overviewに従って、Devilsでrails 3.2.5アプリのfacebookログインを統合しています。 sign_in_and_redirectメソッドが機能していません:( – asitmoharna

+0

私は同じ問題を抱えていましたが、手作業でsign_inと別のリダイレクトを行っただけです。 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 

:私はこのようになります私のapplication_controllerにおけるそれの適応バージョンを持っています。

関連する問題