質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

ログイン画面に行きたいのにトップ画面に勝手に遷移する

tetopeg
nini

総合スコア4

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

2回答

0グッド

0クリップ

284閲覧

投稿2022/12/05 03:44

編集2022/12/05 05:25

前提

deviseをつかって認証機能をつくっています。
ログインしている状態とログアウトしている状態を確かめたく、新規登録したあとに動的ヘッダーの確認をしたかったのですが、挙動がおかしいです。
調べても情報がないため初歩的なミスをしているのかもしれません。
今まで学習を始めて2回ほどdeviseの認証機能は実装したことがあるのですが、初めてこのようなかたちで挙動がおかしくなってしまったので、どこをなおせばいいのか見当がつかないです。
追記するべき内容を教えて下されば追記します。

実現したいこと

/users/sign_inとURLを直打ちした際に、↓のログイン画面に遷移したいです
イメージ説明

発生している問題・エラーメッセージ

/users/sign_inと直打ちすると勝手に↓のようにトップ画面に遷移します
イメージ説明

エラーメッセージはでないです。

Cloud9

1Started GET "/users/sign_in" for 115.36.161.203 at 2022-12-05 03:04:34 +0000 2Cannot render console from 115.36.161.203! Allowed networks: 127.0.0.0/127.255.255.255, ::1 3Processing by Devise::SessionsController#new as HTML 4 User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] 5Redirected to https://58147239c70445eca925e032d5d67f05.vfs.cloud9.ap-northeast-1.amazonaws.com/ 6Filter chain halted as :require_no_authentication rendered or redirected 7Completed 302 Found in 8ms (ActiveRecord: 0.1ms | Allocations: 1998) 8 9 10Started GET "/" for 115.36.161.203 at 2022-12-05 03:04:34 +0000 11Cannot render console from 115.36.161.203! Allowed networks: 127.0.0.0/127.255.255.255, ::1 12Processing by HomesController#top as HTML 13 Rendering layout layouts/application.html.erb 14 Rendering homes/top.html.erb within layouts/application 15 Rendered homes/top.html.erb within layouts/application (Duration: 0.1ms | Allocations: 40) 16[Webpacker] Everything's up-to-date. Nothing to do 17 User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] 18 ↳ app/views/layouts/application.html.erb:15 19 Rendered layout layouts/application.html.erb (Duration: 16.4ms | Allocations: 2766) 20Completed 200 OK in 20ms (Views: 19.2ms | ActiveRecord: 0.1ms | Allocations: 3208)

該当のソースコード

routes.rb

1Rails.application.routes.draw do 2 devise_for :users 3 root to: 'homes#top' 4 get 'home/about' => 'homes#about', as: 'about' 5 6 resources :books, only:[:index, :show, :edit, :create, :update, :destroy] 7 resources :users, only:[:index, :show, :edit, :create, :update, :destroy] 8 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 9end

application_controller

1class ApplicationController < ActionController::Base 2 before_action :configure_permitted_parameters, if: :devise_controller? 3 4 def after_sign_in_path_for(resource) 5 user_path(resource) 6 end 7 8 def after_sign_out_path_for(resource) 9 10 root_path 11 end 12 13 protected 14 15 def configure_permitted_parameters 16 devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) 17 devise_parameter_sanitizer.permit(:sign_in, keys: [:name]) 18 end 19end 20

application.html.erb

1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Bookers3</title> 5 <meta name="viewport" content="width=device-width,initial-scale=1"> 6 <%= csrf_meta_tags %> 7 <%= csp_meta_tag %> 8 9 <%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 10 <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> 11 </head> 12 13 <body> 14 <header> 15 <% if user_signed_in? %> 16 <li> 17 <%= link_to "ログアウト", destroy_user_session_path, method: :delete %> 18 </li> 19 <% else %> 20 <li> 21 <%= link_to "新規登録", new_user_registration_path %> 22 </li> 23 <li> 24 <%= link_to "ログイン", new_user_session_path %> 25 </li> 26 <% end %> 27 </header> 28 <%= yield %> 29 </body> 30</html> 31

↓ rails routesでパスを確認

Cloud9

1ec2-user:~/environment/bookers3 (develop) $ rails routes 2 Prefix Verb URI Pattern Controller#Action 3 new_user_session GET /users/sign_in(.:format) devise/sessions#new 4 user_session POST /users/sign_in(.:format) devise/sessions#create 5 destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy 6 new_user_password GET /users/password/new(.:format) devise/passwords#new 7 edit_user_password GET /users/password/edit(.:format) devise/passwords#edit 8 user_password PATCH /users/password(.:format) devise/passwords#update 9 PUT /users/password(.:format) devise/passwords#update 10 POST /users/password(.:format) devise/passwords#create 11 cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel 12 new_user_registration GET /users/sign_up(.:format) devise/registrations#new 13 edit_user_registration GET /users/edit(.:format) devise/registrations#edit 14 user_registration PATCH /users(.:format) devise/registrations#update 15 PUT /users(.:format) devise/registrations#update 16 DELETE /users(.:format) devise/registrations#destroy 17 POST /users(.:format) devise/registrations#create 18 root GET / 19

補足情報(FW/ツールのバージョンなど)

Rails 6.1.4

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

yuma.inaura

2022/12/05 04:09

ログイン中の挙動ですか?
tetopeg

2022/12/05 04:12

ご質問ありがとうございます。おっしゃる通りでログイン中の挙動になります。新規登録をした後に、ログインしている状態を確認するためにusers/sign_in へアクセスすると、トップ画面に遷移してしまいます。
yuma.inaura

2022/12/05 05:00

>2回ほどdeviseの認証機能は実装したことがあるのですが 過去のコードを見比べてどこが違いそうでしょうか?
mather

2022/12/05 10:11 編集

resources :users, only:[:index, :show, :edit, :create, :update, :destroy] としているのに GET /users GET /users/:id が存在しないのは不自然だと思いますが、今の時点で routes.rb および rails routes の結果はどうなっていますか?

回答2

1

自己解決

こちらの質問は前回したログアウト機能に関する質問とつながっていたのでそちらの問題が解決したため、この問題も同じように解決できました。ログイン認証で自分はユーザーネームとパスワードを使おうと思っていたのですが、
config/initializers/devise.rb のconfig.authentication_keys = [:email] をnameに変更することを忘れており、こちらを変更したら全て解決いたしました。
今までと同じように記述したつもりが、上記のように抜けている箇所がありました。
ご指摘いただいたyuma.inauraさま、ありがとうございました。

投稿2022/12/05 10:42

tetopeg

総合スコア4

yuma.inaura👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

ログイン中に sign_in にアクセスすると自動的にログアウト状態になり、なおかつrootにリダイレクトされてたりしないでしょうか

rb

1 def after_sign_out_path_for(resource) 2 3 root_path 4 end

投稿2022/12/05 04:27

yuma.inaura

総合スコア1371

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

tetopeg

2022/12/05 04:39

sign_inにアクセスしてログアウト状態になってトップ画面に遷移されることはないです。 ログアウトのリンクもつくったのですがログアウトもできないです。ログアウトしようとするとなぜかdeviseのセッションコントローラのdestroyアクションではなく、ユーザーコントローラのshowアクションが呼び出されます。
yuma.inaura

2022/12/05 04:58

rails routes でのルーティングはどうなってるんでしょうか
tetopeg

2022/12/05 05:29

見直しはしたんですけど記述内容は同じです。見落としがあるはずなんですけど分からないです。 rails routesの内容は再度更新させていただきました。
yuma.inaura

2022/12/05 05:43

今 プレーンのrailsプロジェクトにdevise入れて手元で試しましたが http://localhost:3000/users/sign_in はトップページにリダイレクトされたので devise のデフォルト挙動じゃないでしょうか

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。