に役立つ可能性があります。
新しいバージョンのDevise(私は2.1.2になっています)にコントローラにbefore_filter :authenticate_user!
を追加すると自動的にこの動作が設定されます。
これを手動で設定する場合は、1つの方法は、パスをsession
に設定することです。 Deviseはsession["#{resource}_return_to"]
にそれを見つけようとします。ここで、 'resource'はユーザーモデルの名前です。だから通常はsession["user_return_to"]
です。あなたには期間がありました。あなたのバージョンでは、あなたのエラーを引き起こしていた可能性があります。また、session
はキーの文字列値を受け入れますので、それを象徴化しようとする必要はありません。
もう1つの方法は、やっていたとおりにafter_sign_in_path_for(resource)
メソッドを上書きすることです。 devise wiki How To: Redirect back to current page after sign inでこれを行う方法の詳細があります。
最後に、リダイレクトが発行されるため、フルURLの使用を検討することをおすすめします。
あなたApplicationController.rbで
def after_sign_in_path_for(resource)
session["#{resource}_return_to"] || root_url
end
あなたが 'session [:" user.return_to "]'を使用している理由は何ですか? 'session [:return_to]'はDeviseのドキュメントに書かれているものです。 – sorens
[手動でreturn_to with deviseを設定する]の複製が可能です(http://stackoverflow.com/questions/5957714/manually-setting-return-to-with-devise) –