Ruby on rails 会话控制器中的命名错误#销毁
在尝试设置注销操作时,我在Sessions#U控制器中创建了一个Session#destroy方法。以下是完整的控制器:Ruby on rails 会话控制器中的命名错误#销毁,ruby-on-rails,Ruby On Rails,在尝试设置注销操作时,我在Sessions#U控制器中创建了一个Session#destroy方法。以下是完整的控制器: class SessionsController < ApplicationController before_action :set_session, only: [:show, :edit, :update, :destroy] helper_method :current_user def new end def create @u
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
当我尝试使用我设置的注销按钮或导航到localhost:3000/logout时,我收到以下错误
错误消息
我甚至找不到代码来更仔细地查看它。有什么想法吗 那么,您的
设置会话
方法在哪里?在操作之前显示您的设置会话
方法删除:设置会话,仅:[显示,:编辑,:更新,:销毁]
。您还应该使用reset\u session
而不是session.delete(:user\u id)
。我使用railsg\u控制器会话创建了控制器,因此它是自动创建的。在这个实例中需要这样做吗?不-这不是一个真正适合scaffold生成器的场景,因为会话与您的平均资源不同。
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
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