Jackson123
@Jackson123

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[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:
:

ログインすると。。
スクリーンショット 2021-02-02 192823.png

ログイン画面に戻ってくる
スクリーンショット 2021-02-02 193108.png

0

1Answer

Progate の無料会員登録をしてその辺りを探してみましたが,
無料のところには無さそうでしたので,確認できませんでした.

0Like

Comments

  1. @Jackson123

    Questioner

    返信いただきありがとうございます。
    私自身いろいろ試してみましたが見つかりませんでした。
    引き続き探してみます
  2. 今貼ってもらったソースには問題は無いように見えます.

    もう少し状況を切り分けるのはどうでしょうか?

    - `if @user && @user.authenticate(params[:password])` はできている?
    - `posts/index` は動いている?

    など

Your answer might help someone💌