2012-11-26 253 views
0

我设置了Devise来验证/注册用户。销毁会话,Rails设计

但是在注销时遇到问题。

有此链接:

<%= link_to "Sign out", destroy_user_session_path, :method => :delete %> 

它看起来像这样的HTML:

<a href="https://stackoverflow.com/users/sign_out">Sign Out</a> 

当我点击它 - 得到这个错误:

No route matches [GET] "https://stackoverflow.com/users/sign_out" 
+0

它的路由作为一个GET时,它应该是一个删除。你正确地添加'method :: delete',所以我猜这是你的设计路由设置的问题。你能证明吗? – joofsh

+0

第一个代码引用显示它:link_to ...:method =>:delete。或者你在问别的东西? – user1837021

+0

'方法::delete'和':method =>:delete'是相同的,我只是使用了较短的形式。我问你是否可以在你的设备路由设置中显示你的'config/routes.rb'。 – joofsh

回答

1

首先,确保你在你的布局文件“application.html.erb”中有<%= javascript_include_tag :defaults %>

然后,在你的配置 - >初始化 - > “devise.rb” 文件,并确保它说:

config.sign_out_via = :delete

和你 “SIGN_OUT” 代码destroy_user_session_path, :method => :delete应该工作。

如果仍不起作用,请发表评论!

祝你好运。

+0

有两个网站版本。一个是HTML,另一个是Mobile。在:html版本 - 你是对的,我没有javascript_include_tag:默认。一旦我添加它 - 它开始工作。但是:移动版本确实有这个标签,并且仍然没有注销(同样的错误)。我遵循这个教程:[http://ponzicoder.wordpress.com/2011/11/15/rails-3-basic-scaffold-devise-authentication-action-mailer-jquery-mobile/] – user1837021

+0

我修正了它。只需将application.html.erb的内容复制到application.mobile.erb即可。现在够好了。谢谢! – user1837021