【Rails】 deviseで新規登録後またはログイン後にroot_path以外のページに飛ばす
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を確認
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)が必要になります。これないとエラー出ます。
補足
今回は新規登録後やログイン後に指定したページに飛ばすやり方だけどログアウトした後にも同様のやり方で指定したページに飛ばせるので紹介
class ApplicationController < ActionController::Base
def after_sign_out_path_for(resource)
index_path #今回は仮にindex_pathを置いていますがここにログアウト後のpathを書く
end
end
まあ何もしなければroot_pathに飛ぶのであんま使うことなさそう
ではでは
Author And Source
この問題について(【Rails】 deviseで新規登録後またはログイン後にroot_path以外のページに飛ばす), 我々は、より多くの情報をここで見つけました https://qiita.com/ISSO33/items/6ca358bb288e2b236f60著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .