1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

gem deviseにてログイン後の遷移先をログイン前にいた画面にする【rails】

Posted at

経緯

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

恐らくこれでいけるかと思います。

ではお疲れ様でした。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?