プログラミング学習 備忘録

Railsを学習していく上での技術メモ。学んだことや解決したエラーなどを記録していきます。

Sorceryを使ったログイン機能実装時のエラー①

Sorceryを使ったログイン機能の実装を試みたところ、エラーでかなりハマったので備忘録として残そうと思う。


エラー発生時のコード

user_sessions/new.html.erb

<div class="container">
  <div class="row">
    <div class=" col-md-10 offset-md-1 col-lg-8 offset-lg-2">
      <%= form_with(scope: :session, url: login_path, local: true) do |f| %>

      <%= f.label :email %>
      <%= f.email_field :email, class: 'form-control' %>

      <%= f.label :password %>
      <%= f.password_field :password, class: 'form-control' %>

      <%= f.submit "ログイン", class: "btn btn-primary" %>
    <% end %>

      <div class='text-center'>
        <a href="/users/new">登録ページへ</a>
        <a href="#">パスワードをお忘れの方はこちら</a>
      </div>
    </div>
  </div>
</div>

user_sessions_controller.rb

  def new
    @user = User.new
  end

  def create
    @user = login(params[:email], params[:password])

    if @user
      redirect_back_or_to(root_path, success: 'ログインしました')
    else
      flash.now[:alert] = 'Login failed'
      render action: 'new'
    end
  end

・登録したユーザーでログインを試みると、全て user_sessions/new.html.erb にレンダリングされてしまうという現象が発生。

postリクエストを送信した時のサーバーログ

Started POST "/login" for ::1 at 2020-10-13 15:27:01 +0900
Processing by UserSessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"ujWDmNYv6jw70d8mon3AnjWSjKUdj+5udOtEQ75U/aDphHC6Ymi4CqpD3E3z1sqV2JRJr8mj/At7txKIe/
Dfrw==", "user_sessions"=>{"email"=>"oka@gmail.com", "password"=>"[FILTERED]"}, "commit"=>"ログイン"}
  Rendering user_sessions/new.html.erb within layouts/application
  Rendered user_sessions/new.html.erb within layouts/application (2.6ms)
  Rendered shared/_before_login_header.html.erb (1.1ms)
  Rendered shared/_footer.html.erb (0.4ms)
Completed 200 OK in 70ms (Views: 69.0ms | ActiveRecord: 0.0ms)

render action: 'newのコードを、redirect_to root_urlに変えてみるとhomeに。redirect_to new_user_pathに変えてみると新規登録画面に飛ぶように。

・どうやら全てelse処理されている様子・・・

・色々試みるも、なかなか解消されないので、最初から見直すことにした。

②に続く