デフォルトでは root_url
に飛ばされます。
これを変更していきましょう。
コントローラを作成する
$ rails g devise:controllers users
実行すると、 app/controllers/users
の下に registration_controller
, sessions_controller
など必要なコントローラが作成されます。
ルーティングを設定する
これから定義するメソッドを反映させるために devise_for :users
の後に以下を追記します。
config/routes.rb
devise_for :users, controllers: {
registrations: 'users/registrations',
sessions: 'users/sessions'
}
メソッドを定義する
registrations_controller.rb に追記する
アカウント登録後のリダイレクト先と、アカウント編集後のリダイレクト先を設定します。
app/controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
(省略)...
# アカウント登録後のリダイレクト先
def after_sign_up_path_for(resource)
リダイレクト先のパス
end
# アカウント編集後のリダイレクト先
def after_update_path_for(resource)
リダイレクト先のパス
end
例えば、リダイレクト先のパスに user_path(resource)
を設定するとユーザーの個人ページにリダイレクトされます。
sessions_controller.rb に追記する
ログイン後のリダイレクト先とログアウト後のリダイレクト先を設定します。
app/controllers/users/sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
(省略)...
# ログイン後のリダイレクト先
def after_sign_in_path_for(resource)
リダイレクト先のパス
end
# ログアウト後のリダイレクト先
def after_sign_out_path_for(resource)
リダイレクト先のパス
end
redirect先をroutesで確認する
$ rails routes
を実行すると詳細が出てきます。
get行
のみログイン後に遷移したいページを指定できます。
new_user_session GET /users/sign_in(.:format)
例えば上記の場合 new_user_session_path
をリダイレクト先のパスを指定するところに追記します。
posts_index GET /posts/index(.:format)
例えば上記の場合 posts_index_path
をリダイレクト先のパスを指定するところに追記します。