前提・実現したいこと
プログラミング初学者です。この度初めてTeratailにて質問を投じさせていただきます。
何卒よろしくお願い申し上げます。
現在railsにてアプリを開発しております。
deviseを導入してユーザー管理機能を実装いたしました。
新規登録・ログインともに問題ありません。
そこでパスが/users/sign_inだけでなく、トップページ(ルートパス)にもログインのフォームを実装しようと思いました。
フォームの実装はできたのですが、登録されているユーザーのemail・passwordを入力しても、認証ができず、ログイン画面に遷移します。
トップページからでもログインできるようにしたいのですが、お力添え願えますでしょうか。
発生している問題・エラーメッセージ
トップページからemail/passwordを入力してログインを試みたときのログ
Started POST "/users/sign_in" for 172.25.0.1 at 2021-03-27 13:06:46 +0000 Cannot render console from 172.25.0.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1 Processing by Devise::SessionsController#create as HTML Parameters: {"authenticity_token"=>"[FILTERED]", "email"=>"test@test.com", "password"=>"[FILTERED]", "commit"=>"sign in"} Completed 401 Unauthorized in 1ms (Allocations: 363) Processing by Devise::SessionsController#new as HTML Parameters: {"authenticity_token"=>"[FILTERED]", "email"=>"test@test.com", "password"=>"[FILTERED]", "commit"=>"sign in"} Rendering layout layouts/application.html.erb Rendering devise/sessions/new.html.erb within layouts/application Rendered shared/_second-header.html.erb (Duration: 8.3ms | Allocations: 641) Rendered shared/_second-footer.html.erb (Duration: 4.7ms | Allocations: 301) Rendered devise/sessions/new.html.erb within layouts/application (Duration: 15.5ms | Allocations: 1369) [Webpacker] Everything's up-to-date. Nothing to do Rendered layout layouts/application.html.erb (Duration: 59.0ms | Allocations: 6430) Completed 200 OK in 62ms (Views: 61.0ms | Allocations: 6926)
追記 (3/28 0:40)
通常通りログイン画面からemail/passwordを入力してログインに成功した時のログ
Started POST "/users/sign_in" for 172.25.0.1 at 2021-03-27 15:39:20 +0000 Cannot render console from 172.25.0.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1 Processing by Devise::SessionsController#create as HTML Parameters: {"authenticity_token"=>"[FILTERED]", "user"=>{"email"=>"test@test.com", "password"=>"[FILTERED]"}, "commit"=>"ログイン"} User Load (1.7ms) SELECT `users`.* FROM `users` WHERE `users`.`email` = 'test@test.com' ORDER BY `users`.`id` ASC LIMIT 1 Redirected to http://localhost:3000/ Completed 302 Found in 228ms (ActiveRecord: 1.7ms | Allocations: 3488) Started GET "/" for 172.25.0.1 at 2021-03-27 15:39:20 +0000 Cannot render console from 172.25.0.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1 Processing by BikkesController#index as HTML Rendering layout layouts/application.html.erb Rendering bikkes/index.html.erb within layouts/application User Load (1.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 ↳ app/views/shared/_header.html.erb:6 Rendered shared/_header.html.erb (Duration: 15.3ms | Allocations: 1689) Rendered shared/_search-list.html.erb (Duration: 70.7ms | Allocations: 4675) Rendered shared/_footer.html.erb (Duration: 4.5ms | Allocations: 443) Rendered bikkes/index.html.erb within layouts/application (Duration: 93.6ms | Allocations: 7048) [Webpacker] Everything's up-to-date. Nothing to do Rendered layout layouts/application.html.erb (Duration: 137.9ms | Allocations: 11951) Completed 200 OK in 141ms (Views: 138.8ms | ActiveRecord: 1.3ms | Allocations: 12565)
該当のソースコード
ログイン画面のソースコード
ruby
1<%= form_with model: @user, url: user_session_path, class: 'registration-main', local: true do |f| %> 2<div class='form-wrap'> 3 <div class='form-header'> 4 <h1 class='form-header-text'> 5 ログイン 6 </h1> 7 </div> 8 <div class='login-flash-message'> 9 <%= flash[:notice] %> 10 <%= flash[:alert] %> 11 </div> 12 <div class="form-group"> 13 <div class='form-text-wrap'> 14 <label class="form-text">メールアドレス</label> 15 <span class="indispensable">必須</span> 16 </div> 17 <%= f.email_field :email, class:"input-default", id:"email", placeholder:"PC・携帯どちらでも可", autofocus: true %> 18 </div> 19 <div class="form-group"> 20 <div class='form-text-wrap'> 21 <label class="form-text">パスワード</label> 22 <span class="indispensable">必須</span> 23 </div> 24 <%= f.password_field :password, class:"input-default", id:"password", placeholder:"" %> 25 </div> 26 <div class='login-btn'> 27 <%= f.submit "ログイン" ,class:"login-red-btn" %> 28 </div> 29 <div class="info-text-signup"> 30 会員登録がまだの人は<span><%= link_to "こちら", new_user_registration_path %></span> 31 </div> 32</div> 33<% end %>
トップ画面でのログインフォーム
ruby
1 <% unless user_signed_in? %> 2 <%= form_with model: @user, url: user_session_path, class: 'top-session', local: true do |f| %> 3 <%= f.email_field :email, class:"top-input-signin", id:"email", placeholder:"email" %> 4 <%= f.password_field :password, class:"top-input-signin", id:"password", placeholder:"password" %> 5 <div class='top-signin-btn'> 6 <%= f.submit "sign in" ,class:"top-signin-white-btn" %> 7 </div> 8 <div class="top-info-text-signup"> 9 会員登録がまだの人は<span><%= link_to "こちら", new_user_registration_path %></span> 10 </div> 11 <% end %> 12 <% end %>
試したこと
・ログを見る限り、トップページのログインフォームからでも「deviseのSessionController#newアクション」は動いている様子。
→データベースにアクセスできていないということ?
・ログイン画面のフォームをトップページにコピペしたが、記述に誤りがないかの確認。
・「devise ログインフォーム トップページにも」といったキーワードで検索をかけるも有効な記事が見つからず。
・deviseの公式Githubを確認。ログイン画面以外のページからのログイン遷移方法に関して有効な方法は見つからず。
補足情報(FW/ツールのバージョンなど)
各種バージョン
ruby : 2.6.5
rails : 6.1.3
docker : 20.10.5
mysql : 5.7
閲覧いただき誠にありがとうございます。
情報不足がございましたら、遠慮なくおっしゃってください。
何かヒントでもいただけたら幸いでございます。
お時間取らせてしまい恐縮ですが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー