[Ruby on Rails]ログイン機能が実行されない
Q&A
Closed
解決したいこと
ユーザー登録をしているのにログイン機能が実行できない
Ruby on Railsでログイン機能をつくったのですがうまく機能しません。
Progateで作ったものをそのままコピーしたはずなのですがなぜか動きません
ログインが成功したらredirect_toで"/posts/index"のビューに遷移するはずなのですが元の画面にもどってきてしまいます。
解決方法を教えていただきたいです。
発生している問題・エラー
コントローラ
class UsersController < ApplicationController
def login_form
end
def login
@user = User.find_by(email: params[:email])
if @user && @user.authenticate(params[:password])
session[:user_id] = @user.id
flash[:notice] = "ログインしました"
redirect_to("/posts/index")
else
@error_message = "メールアドレスまたはパスワードが間違っています"
@email = params[:email]
@password = params[:password]
render("users/login_form")
end
end
end
ルーティング
Rails.application.routes.draw do
post "users/:id/update" => "users#update"
get "users/:id/edit" => "users#edit"
post "users/create" => "users#create"
get "users/:id/likes" => "users#likes"
get "signup" => "users#new"
get "users/index" => "users#index"
get "users/:id" => "users#show"
post "login" => "users#login"
get "login" => "users#login_form"
get "posts/index" => "posts#index"
get "posts/new" => "posts#new"
get "posts/:id" => "posts#show"
post "posts/create" => "posts#create"
get "posts/:id/edit" => "posts#edit"
post "posts/:id/update" => "posts#update"
post "posts/:id/destroy" => "posts#destroy"
get "/" => "home#top"
get "about" => "home#about"
end
ビュー
<div class="main users-new">
<div class="container">
<div class="form-heading">ログイン</div>
<div class="form users-form">
<div class="form-body">
<% if @error_message %>
<div class="form-error">
<%= @error_message %>
</div>
<% end %>
<%= form_tag("/login") do %>
<p>メールアドレス</p>
<input name="email" value="<%= @email %>">
<p>パスワード</p>
<input type="password" name="password" value="<%= @password %>">
<input type="submit" value="ログイン">
<% end %>
</div>
</div>
</div>
</div>
新規登録したユーザーはこれです↓
=> #<User:0x0000564c563d56f0
id: 2,
name: "田中",
email: "example@gmail.com",
created_at: Tue, 02 Feb 2021 19:08:54 JST +09:00,
updated_at: Tue, 02 Feb 2021 19:08:54 JST +09:00,
image_name: "default_user.jpg",
password_digest:
:
0