Reputation: 47
When attempting to set up a Logout action, I create a Session#destroy method in the Sessions_Controller. Below is the full Controller:
class SessionsController < ApplicationController
before_action :set_session, only: [:show, :edit, :update, :destroy]
helper_method :current_user
def new
end
def create
@user = User.find_by_email(params[:session][:email])
if @user && @user.authenticate(params[:session][:password])
session[:user_id] = @user.id
redirect_to '/tasks'
else
redirect_to 'login'
end
end
def destroy
log_out
redirect_to '/login'
end
log_out looks like this in sessions_helper.rb:
def log_out
session.delete(:user_id)
@current_user = nil
end
I receive the below error when attempting to use the logout button I have set up or navigate to localhost:3000/logout.
Error Message
I cannot even find that code to look at it more closely. Any ideas?
Upvotes: 0
Views: 583
Reputation: 102222
class SessionsController < ApplicationController
# move this to ApplicationController instead of duplicating it all over your app
helper_method :current_user
def new
end
def create
@user = User.find_by_email(params[:session][:email])
if @user && @user.authenticate(params[:session][:password])
session[:user_id] = @user.id
redirect_to '/tasks'
else
redirect_to '/login'
end
end
def destroy
log_out
redirect_to '/login'
end
end
def log_out
reset_session
@current_user = nil
end
Upvotes: 1