Ruby on rails 会话控制器中的命名错误#销毁

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

在尝试设置注销操作时,我在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
    @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