我正在Railstutorial.org的教程中学习,并且已经通过测试完成了第8章。我的问题是,如果我正确地遵循指南的代码,我可以登录,但无法到注销。
如果我点击“注销”,我将被重定向到root_path,但是作为一个仍然登录的成员。
我想我追踪到这种行为是因为我的治疗助手。具体如下:
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在说,“嘿,没有==!太好了!我们找到了用户!”但这显然不是我们想要的行为。
我通过将current_user方法更改为以下方法修复了它:
def current_user
@current_user ||= cookies[:remember_token] && User.find_by_remember_token(cookies[:remember_token])
end我完全接受并理解这很可能是我代码中的一个错误。我在这个项目中找到了Michael的承诺,并对我们的文件进行了比较,但没有发现任何差异。对这里可能发生了什么有什么想法吗?
谢谢您抽时间见我。
发布于 2012-12-18 07:31:10
把这个放进你的..。
主计长:
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 %>https://stackoverflow.com/questions/13928229
复制相似问题