サインインした後、 Deviseをユーザーの前のページにリダイレクトさせようとすると、大きな問題が発生します。
Wiki のガイドに従おうとしましたが、このコードを実装すると次のようになります。
def after_sign_in_path_for(resource)
sign_in_url = url_for(:action => 'new', :controller => 'sessions', :only_path => false, :protocol => 'http')
if request.referer == sign_in_url
super
else
request.referer || "/"
end
end
常にルートにリダイレクトされ、前のページにはリダイレクトされません。
同じ問題に関する以前の質問を見つけましたが、それらの解決策はうまくいきませんでした。
次に、それを単純化し、参照 URL のパスだけを取得してユーザーを以前の URL に戻すだけでよいと考えましたが、これで同じエラーが発生します。
def after_sign_in_path_for(resource)
URI(request.referer).path
end
単純に静的パスを入れればうまくいきます:
def after_sign_in_path_for(resource)
"/somepath"
end
それは絶対にうまくいきます。ここで明らかな何かが欠けていると確信しています!