我正在为我的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上运行?
很多。答案 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设计的更多信息,请查看以下内容:
答案 1 :(得分:0)
包括jquery和jquery_ujs。
<%= javascript_include_tag "jquery", "jquery_ujs" %>