真的是新設計 - 這是非常令人沮喪的所有誠實...設計銷燬會話不會破壞會話嗎?
我的用戶會話沒有被破壞。
這裏是我的導航欄的鏈接:
<li><%= link_to 'Logout', destroy_user_session_path, :method => :delete %></li>
devise.rb有:刪除配置方法:
# The default HTTP method used to sign out a resource. Default is :delete.
config.sign_out_via = :delete
路線是:
destroy_user_session DELETE /users/sign_out(.:format) sessions#destroy
應用控制器說:
class ApplicationController < ActionController::Base
protect_from_forgery
private
def after_sign_out_path_for(resource_or_scope)
root_path
end
我點擊我的退出鏈接,我的控制檯顯示:
Started GET "https://stackoverflow.com/users/sign_out" for 127.0.0.1 at 2014-04-18 12:00:26 -0500
Processing by UsersController#show as HTML
Parameters: {"id"=>"sign_out"}
MONGODB (0.8ms) waittext_development['users'].find({:_id=>BSON::ObjectId('53515685963e6507ad00003e')}).limit(-1)
這似乎並沒有被找到活動會話(我點擊它在挫折十多次),但問題是我登陸的頁面 - UsersController#show - 不是我告訴它路由到的頁面。它應該是root_path這是用戶#index
所以我得到所有這些nil類錯誤的用戶#show,因爲它試圖呈現默認的rails @ user.name等,而@user沒有定義 - 我終於推翻手動秀動作簡單地渲染「索引」我結束了我的索引頁上 - 但還是 - 我看到這裏current_user.email印刷:
<% if user_signed_in? -%>
<ul>
<li><%= current_user.email %></li>
<li><%= link_to 'My info', edit_user_registration_path %></li>
<li><%= link_to 'Sign out', destroy_user_session_path %></li>
</ul>
它正在評估TRUE和我得到這三個列表項。
用戶不應該在上簽名,因爲我剛剛銷燬了會話!
這是什麼?
你讓我至少有一步 - 但我得到這個錯誤:未定義的方法'stringify_keys'的「/用戶/ sign_out」:字符串 - 現在谷歌搜索... – notaceo
好的,所以你得到我試圖得到的錯誤: <%= link_to「TEXT」,path,:method =>「DELETE」do%><%end%> 你必須把do和end之間的文本塊以避免stringify_keys錯誤。謝謝 - 這解決了我的問題 – notaceo