###①前提・実現したいこと
フリマアプリを作成中。
deviseを用いたユーザー管理機能を実装中ですが、ログインがどうしてもできません。
ruby on railsに明るい方、ぜひお知恵を貸してください。
###②発生している問題・エラーメッセージ
新規登録画面から登録済みのemail、passwordでログインを試みるも、
「Invalid Email or password.」と、再ログインを求められてしまいます。
なお、Sequel Proで確認したところ、新規登録時のデータはきちんと保存されています。
コンソールでは以下の表示となります。(新規登録も記載)
Processing by Devise::RegistrationsController#create as HTML Parameters: {"authenticity_token"=>"LDp3GSdVbq9AxK/5LuzxqDlR+kAVqZhlIVnXD/tQvWN0t/fTzXji6AIyy3Zvo2Ylo5wCeeMP+MWyczGMbetxAA==", "user"=>{"nickname"=>"碇シンジ", "email"=>"shinji.ikari@nerv.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "last_name"=>"碇", "first_name"=>"シンジ", "last_name_kana"=>"イカリ", "first_name_kana"=>"シンジ", "birthday(1i)"=>"2001", "birthday(2i)"=>"6", "birthday(3i)"=>"6"}, "commit"=>"会員登録"} (0.3ms) BEGIN User Exists? (15.4ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY 'shinji.ikari@nerv.com' LIMIT 1 User Create (3.6ms) INSERT INTO `users` (`nickname`, `email`, `encrypted_password`, `last_name`, `first_name`, `last_name_kana`, `first_name_kana`, `birthday`, `created_at`, `updated_at`) VALUES ('碇シンジ', 'shinji.ikari@nerv.com', '$2a$12$mr501wIvQGFJjg87A9aLUuuF29/UCj..RQI/PAu5PHAH6lo43WqA6', '碇', 'シンジ', 'イカリ', 'シンジ', '2001-06-06', '2020-11-06 12:52:27.538321', '2020-11-06 12:52:27.538321') (2.1ms) COMMIT Redirected to http://localhost:3000/ Completed 302 Found in 419ms (ActiveRecord: 21.3ms | Allocations: 10601) Processing by Devise::SessionsController#new as HTML Parameters: {"authenticity_token"=>"bpqrvGmJmK/VIWkFrdsW3OF/1jofGzXrUQq1TARNRhDMa9/FYwDyEaM39TohI8vF6YtVj9fm7BZMSEd5OgKT0w==", "email"=>"ikari.shinji@nerv.com", "password"=>"[FILTERED]", "commit"=>"ログイン"} Rendering devise/sessions/new.html.erb within layouts/application Rendered shared/_second-header.html.erb (Duration: 1.8ms | Allocations: 692) Rendered shared/_second-footer.html.erb (Duration: 0.4ms | Allocations: 311) Rendered devise/sessions/new.html.erb within layouts/application (Duration: 5.1ms | Allocations: 2400) [Webpacker] Everything's up-to-date. Nothing to do Completed 200 OK in 43ms (Views: 41.3ms | ActiveRecord: 0.0ms | Allocations: 20123)
ここで仮説なのですが、
新規登録時には
"authenticity_token"...,"user"=>{"nickname"=>... となっているのに対し、
ログインでは
authenticity_token"...,"email"=>...と"user"のハッシュがない状態です。
原因はここでしょうか?
これを解決するには、どのファイルにどのように記述したら良いのでしょうか。
###③該当のソースコード
▼applicationコントローラー
ruby
1class ApplicationController < ActionController::Base 2 before_action :authenticate_user!, only: [:/] 3 before_action :configure_permitted_parameters, if: :devise_controller? 4 5 private 6 def configure_permitted_parameters 7 devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :last_name, :first_name, :last_name_kana, :first_name_kana, :birthday]) 8 devise_parameter_sanitizer.permit(:sign_in, keys: [:email, :password]) 9 end 10end
▼app/views/devise/sessions/new.html.erb
ruby
1<%= render "shared/second-header"%> 2 3<%= form_with class: 'registration-main', local: true do |f| %> 4<div class='form-wrap'> 5 <div class='form-header'> 6 <h1 class='form-header-text'> 7 会員情報入力 8 </h1> 9 </div> 10 <div class='login-flash-message'> 11 <%= flash[:notice] %> 12 <%= flash[:alert] %> 13 </div> 14 <div class="form-group"> 15 <div class='form-text-wrap'> 16 <label class="form-text">メールアドレス</label> 17 <span class="indispensable">必須</span> 18 </div> 19 <%= f.email_field :email, class:"input-default", id:"email", placeholder:"PC・携帯どちらでも可", autofocus: true %> 20 </div> 21 <div class="form-group"> 22 <div class='form-text-wrap'> 23 <label class="form-text">パスワード</label> 24 <span class="indispensable">必須</span> 25 </div> 26 <%= f.password_field :password, class:"input-default", id:"password", placeholder:"" %> 27 </div> 28 <div class='login-btn'> 29 <%= f.submit "ログイン" ,class:"login-red-btn" %> 30 </div> 31</div> 32<% end %> 33 34<%= render "shared/second-footer"%>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。