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

时间:2011-12-05 09:18:04

标签: iphone ruby-on-rails devise

我正在为我的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上运行

很多。

2 个答案:

答案 0 :(得分:1)

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

尝试将routes.rb文件中的路由作为删除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

答案 1 :(得分:0)

包括jquery和jquery_ujs。

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