注销帐户时未定义的方法

Undefined method when logging out of an account

我正在 login/logout 系统上工作,但是我在实际注销和销毁会话时遇到困难。我收到“SessionsController#destroy 中的 NoMethodError”,这是我的“忘记”方法的未定义方法。

这是我的会话助手中的方法。

def forget(user)
    User.forget
    cookies.delete(:user_id)
    cookies.delete(:remember_token)
  end

  def log_out
    current_user && forget(current_user)
    session.delete(:user_id)
    @current_user = nil
  end

我的会话控制器:

  def destroy
    log_out if logged_in?
    redirect_to_root_url
  end

这是我在 cass 中的注销 link 我在这里犯了一些错误:

<%= link_to "Log Out", logout_path, method: :delete, class: "dropdown-item" %>

我尝试将 current_user 传递给 forget 方法,但这并没有改变任何东西。

在您的 def forget(user) 方法中,您调用的是 User.forget 而不是 user.forget。看起来 forget 是一个实例方法,而不是 class 方法,这就是你调用它的方式。