⛳
Rails|ログイン後に、ログイン前に閲覧していたページに遷移する
開発環境
ruby 3.1.2p20
Rails 6.1.7.4
Cloud9
コントローラーの編集
application_controller.rb
class ApplicationController < ActionController::Base
after_action :store_location
def store_location
if (request.fullpath != "/users/sign_in" && \
request.fullpath != "/users/sign_up" && \
request.fullpath != "/users/password" && \
!request.xhr?) # don't store ajax calls
session[:previous_url] = request.fullpath
end
end
#ログイン後のリダイレクトをログイン前のページにする
def after_sign_in_path_for(resource)
session[:previous_url] || root_path
end
end
store_location
メソッド
アクセスされたページのURLをセッションに保存するメソッド。
request.fullpath
現在のページのフルパスを取得するメソッド。
if (request.fullpath != "/users/sign_in" && \ ...
「現在のページのフルパスが、ログインページ、新規登録ページ、非同期通信、パスワード変更ページではない場合」という意。
!request.xhr?
現在のリクエストが非同期通信ではない場合にtrue
を返す。
session[:previous_url] || root_path
session[:previous_url]が存在する場合はそのURLを、存在しない場合はroot_path(ホームページのURL)を返す。
参考にさせていただいた記事
Discussion