Ruby on rails 无法完全注销-RailsTutorial.org-第8章

Ruby on rails 无法完全注销-RailsTutorial.org-第8章,ruby-on-rails,railstutorial.org,Ruby On Rails,Railstutorial.org,我正在Railstutorial.org上完成教程,并通过测试完成了第8章。我的问题是,如果我完全按照指南的代码操作,我可以登录,但是无法到注销 如果我单击“注销”,我将被重定向到根路径,但仍然是已登录的成员 我想我找到了我的助手。具体如下: def current_user @current_user ||= User.find_by_remember_token(cookies[:remember_token]) end 通过rails控制台和pry,我能够确定cookie

我正在Railstutorial.org上完成教程,并通过测试完成了第8章。我的问题是,如果我完全按照指南的代码操作,我可以登录,但是无法注销

如果我单击“注销”,我将被重定向到根路径,但仍然是已登录的成员

我想我找到了我的助手。具体如下:

  def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end
通过rails控制台和pry,我能够确定cookies[:remember_token]为零,但由于我的用户的remember_token也为零,find_by_remember_token会说,“Hey nil==nil!太好了!我们找到了我们的用户!”除了这显然不是期望的行为外

我已通过将当前用户方法更改为以下方式修复了此问题:

  def current_user
   @current_user ||= cookies[:remember_token] && User.find_by_remember_token(cookies[:remember_token])
  end
我完全接受并理解这可能是我代码中的错误。我在项目的这一点上找到了Michael Hartl的提交,并比较了我们的文件,没有发现任何差异。对这里可能发生的事情有什么想法吗

谢谢你抽出时间

把这个放在你的

控制器:

def logout
   reset_session
   redirect_to :controller => 'classified', :action => 'list'
end
在您看来:您需要添加一个注销链接

<% else %>
    <p><%= "Welcome #{session[:user].login}!" -%></p>
    <p><%= link_to 'Logout', :controller => 'user',:action => 'logout' -%></p>
<% end %>

'用户',:操作=>'注销'-%>