2012-12-18 41 views
0

我正在通過Railstutorial.org上的教程,並完成了第8章的通過測試。我的問題是,如果我完全按照指南的代碼,我可以登錄,但無法註銷無法完全註銷 - RailsTutorial.org - 第8章

如果我點擊「註銷」,我被重定向到root_path,但仍然是一個登錄成員。

我想我跟蹤到我的會話助手的行爲。具體如下行:

def current_user 
    @current_user ||= User.find_by_remember_token(cookies[:remember_token]) 
    end 

通過Rails控制檯和撬我能夠確定的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 Hartl的承諾,並比較了我們的文件並找不到差異。關於可能發生在這裏的任何想法?

謝謝你的時間。

回答

-1

把這個在你的...

控制器:

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 %>