Failed to redirect from login_page to home page using devise

Viewed 25

Hope you all are doing well. Actually i am facing an issue regarding redirect of my application from one page to another page.

Here is my sessions controller:-

```class Users::SessionsController < Devise::SessionsController
  def new
    @user=User.new 
  end

  def create
    @user=User.find_by(email: params[:email])
    if user.present? && user.authenticate(params[:password])
        session[:user_id] = user.id
        redirect_to home_path, notice: "Logged in Successfully"
    else
        flash[:alert] = "Invalid Email or Password"
        render :new
    end
  end  
  def destroy
    session[:user_id] = nil
    redirect_to root_path, notice: "Logged Out"
end  
end```

My session view

```<div class="container py-5">
<!-- Outer Row -->
<div class="row justify-content-center">

<div class="col-xl-10 col-lg-12 col-md-9">

<div class="card o-hidden border-0 shadow-lg my-5">
<div class="card-body p-0">
<!-- Nested Row within Card Body -->
<div class="row">
  <div class="col-lg-6 d-none d-lg-block bg-login-image"></div>
  <div class="col-lg-6">
      <div class="p-5">
          <div class="text-center">
              <h1 class="h4 text-gray-900 mb-4">Log In!</h1>
          </div>
        <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
         <%= render "devise/shared/error_messages", resource: resource %>
        <div class="form-group">
        <%= f.email_field :email, autofocus: true, autocomplete: "email", class:"form-control form-control-user", placeholder:"Enter Email Address..." %>
        </div>
        <div class="form-group">
        <%= f.password_field :password, autofocus: true, autocomplete: "current-password", class:"form-control form-control-user", placeholder:"Please Enter Password" %>                                 </div>
        </div>
        <div class="check1">
        <div class="form-group">
        <% if devise_mapping.rememberable? %>
        <div class="form-group">
        <%= f.check_box :remember_me %>
        <%= f.label :remember_me %>
        </div>
        
        <% end %>
      </div>
      <div class="actions">
      <%= f.submit "Log in", class:"btn btn-primary btn-user"%><br>&nbsp;&nbsp;&nbsp;
      </div>
 
      <% end %>
          </div>
      </div>
    </div>
  </div>
  </div>
  </div>
  </div>
  </div>
  </div>```

def create
    @user=User.find_by(email: params[:email])
   if users.present? && users.authenticate(params[:password])  
        session[:user_id] = user.id
        redirect_to home_path, notice: "Logged in Successfully"
    else

In this last error code i am facing issue in 3rd line user.present? line. Please help me in this it's been 2 days am working on this issue but no working

1 Answers

You don't need to override Devise::SessionsController in your case. Just remove

controllers: { sessions: 'users/sessions' }

from your routes. Should be just:

devise_for :users

And add after_sign_in_path_for to your ApplicationController controller

class ApplicationController < ActionController::Base
  def after_sign_in_path_for(*)
    home_path
  end
end
Related