真的是新设计 - 这是非常令人沮丧的所有诚实...设计销毁会话不会破坏会话吗?
我的用户会话没有被破坏。
这里是我的导航栏的链接:
<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