注销帐户时未定义的方法
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 方法,这就是你调用它的方式。
我正在 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 方法,这就是你调用它的方式。