2
1

More than 3 years have passed since last update.

【Rails】 deviseで新規登録後またはログイン後にroot_path以外のページに飛ばす

Posted at

deviseで新規登録したけどroot_path以外のページに飛ばしたい...

今までdevise使ってきたけど新規登録やログインをするとroot_pathのページに勝手に戻ってログインしている状態になってたんですが(いやー便利)、サイト作っている途中にroot_path以外のページに飛ばしたことになりまして調べてみました。

コントローラーに記述して飛ばす

root_path以外のページ遷移は多分コントローラに書かないと出来ないかも
調べてたらapplication_controller.rbにまとめて書く方やそれぞれの動作に合わせてregistrations_controller.rbやsessions_controller.rbに書く方がいましたが今回はapplication_controller.rbにまとめて書きました。

その前にrails routesで飛ばしたいpathを確認

3e319ab23a667d951a0ea7f6b885d3ee.png
今回は下から2番目のuser_pathに飛ばします。

application_controller.rbへ記述

application_controller.rb
class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    user_path(resource)
  end
end

この'after_sign_in_path_for(resource)'でログイン後にどこのページに飛ぶか指定できるんで中にpathを書けばそこに飛んじゃいます。今回はuser_pathですね。

ちなみにpathの横に(resource)と書いているのはURI Patternが/users/:idなのでこの:idを渡すために(resource)が必要になります。これないとエラー出ます。

補足

今回は新規登録後やログイン後に指定したページに飛ばすやり方だけどログアウトした後にも同様のやり方で指定したページに飛ばせるので紹介

application_controller.rb
class ApplicationController < ActionController::Base
  def after_sign_out_path_for(resource)
    index_path #今回は仮にindex_pathを置いていますがここにログアウト後のpathを書く
  end
end

まあ何もしなければroot_pathに飛ぶのであんま使うことなさそう

ではでは

2
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
2
1