経緯
rails のgem devise使用時にログイン後の遷移先をどこにするみたいな記事はよく見られます。
指定したpathにリダイレクトするという記事はよく見るのですが、
ログイン前のページを保持してログイン後に戻ってくる。 って言うのは見つけられなかったので書いてみました。(多分検索力不足or需要がない)
爆速で書いたので、綺麗なコードではないかもしれません。悪しからず。
あくまで備忘録です(保険かけとく)
実装
めんどくさくて全てApplicationControllerぶち込んでいます。
ApplicationController
class ApplicationController < ActionController::Base
before_action :store_user_location!, if: :storable_location?
private
def storable_location?
request.get? && !devise_controller? && !request.xhr? # 必要に応じて条件を調整してください。
end
def store_user_location!
session[:user_return_to] = request.fullpath
end
def after_sign_in_path_for(resource)
stored_location = session[:user_return_to]
session[:user_return_to] = nil # リダイレクト後はセッションから削除
stored_location || root_path # リダイレクト先がない場合はデフォルトのパスを使用
end
end
恐らくこれでいけるかと思います。
ではお疲れ様でした。