###実現したいこと
メールアドレスとパスワードが合わない時に、エラー画面が出てしまいます。
パスワードが合っていない場合、if @user == @user.authenticate(params[:password])で一致しないので、
elseにて、"メールアドレスまたはパスワードが間違っています"のエラー文を表示と共に、
"users/login_formへrenderさせたいです。
controller
1def login 2 # メールアドレスでユーザーを検索 3 @user = User.find_by(email: params[:email]) 4 # パスワードの一致を検証 5 if @user == @user.authenticate(params[:password]) 6 session[:user_id] = @user.id 7 flash[:notice] = "ログインしました" 8 redirect_to("/posts/story") 9 else 10 @error_message = "メールアドレスまたはパスワードが間違っています" 11 @email = params[:email] 12 @password = params[:password] 13 render("users/login_form") 14 end 15 end
class CreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| t.string :name t.string :email t.string :password_digest t.timestamps end end end
rb
1class User < ApplicationRecord 2 has_secure_password 3end
gem
1gem 'bcrypt', '~> 3.1.7'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/20 14:18 編集
2020/04/20 14:20