繁体   English   中英

设计用户注销不能在iPhone上运行?

[英]Devise user logout not working on iPhone?

我正在为我的Rails应用程序设计iPhone视图,我使用设计宝石进行身份验证,但是当我在iphone视图中注销时,它不起作用,我记录了日志,我发现:

Started GET "/users/sign_out" for 127.0.0.1 at 2011-12-05 17:06:24 +0800
Processing by UsersController#show as HTML
Parameters: {"id"=>"sign_out"}

我知道GET就是问题所在,但是当我在我的桌面浏览器中测试时,比如Chrome和Safari,注销操作是通过DELETE方法:

Started DELETE "/users/sign_out" for 127.0.0.1 at 2011-12-05 17:14:58 +0800
Processing by Devise::SessionsController#destroy as HTML

这是我的路线配置:

devise_for :users
resources :users, :only => :show

和注销链接:

<%= link_to 'Logout', destroy_user_session_path, :method => :delete %>

我只是想知道为什么退出链接在Mobile Safari上不起作用

多谢。

可能Mobile Safari不支持RESTful设计,因此无法发送删除HTTP请求。

尝试将routes.rb文件中的路由与Delete HTTP请求进行匹配

match "/logout" => "devise/sessions#destroy", :via => [:delete]

然后,您退出的链接应该是这样的

<%= link_to 'Sign Out', logout_path %>

如果它不起作用,请尝试覆盖Devise :: SessionsController,如下所示:

class SessionsController < Devise::SessionsController
 def log_out
  #custom log_out
 end
end

然后将routes.rb文件中的路由作为get HTTP请求添加到该操作。

我部分测试了这些并为我工作。 如果你得到解决,请告诉我,因为我还没有完全测试这些解决方案。

如果您需要有关RESTful设计的更多信息,请查看以下内容:

http://www.slideshare.net/calamitas/restful-best-practices

包括jquery和jquery_ujs。

<%= javascript_include_tag "jquery", "jquery_ujs" %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM