【发布时间】:2014-02-22 01:36:18
【问题描述】:
我是 Rails 的新手,到目前为止还不错,目前我正在尝试使用 Devise 实现用户身份验证。一切正常,除了注销。我已经在我的标题中创建了注销链接,如下所示:
<%= link_to 'Sign out', destroy_user_session_path, :method => :delete %>
app/config/initializers/devise.rb 的文件有以下设置:
config.sign_out_via = :delete
据我所知,由于 Devise 使用 HTTP DELETE 请求注销,我需要专门将注销链接设置为 DELETE。但是,当单击链接时,请求仍然通过GET 发送,因为我收到此错误:
No route matches [GET] "/users/sign_out"
从 Google 看来,这是因为我需要与 Rails 捆绑在一起的 jQuery 版本来为 HTTP DELETE 方法实现一种 polyfill。但是,当我清理所有资产时,我选择使用最新版本的 jQuery,因此,这在我的 application.js 文件中:
//= require jquery-2.1.0
//= require bootstrap
//= require plupload.full.min
即使包含 jQuery,它仍然通过GET 发送请求。有人建议我在我尝试过的布局中使用<%= javascript_include_tag :defaults %>,而defaults.js 上只有404,就像这样:
No route matches [GET] "/javascripts/defaults.js"
有没有人能解释一下这里发生了什么以及解决这个问题的必要步骤?我知道我可以告诉 Devise 使用 GET 退出,但这只是在避免问题。
【问题讨论】:
标签: jquery ruby-on-rails ruby ruby-on-rails-3 devise