所以我一直在创建我的webapp并遇到了Devise的问题。这是我的不同文件。
devise.rb文件
config.sign_out_via = :delete
config.sign_out_via = :get if Rails.env.test?
index.html.erb文件
<li>
<%= link_to "Logout", destroy_user_session_path, :method => :delete %>
</li>
routes.rb文件
devise_for :users do
get '/users/sign_out' => 'devise/sessions#destroy'
end
问题是如果我在我的网络应用程序上按“注销”,我会立即得到:
No route matches [GET] "/users/sign_out"
当我运行rake路线时| grep destroy_user,这是响应。
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
不确定是什么问题。我该如何解决?我正在使用rails 4.2.1 / devise 4.1.1。提前谢谢。
答案 0 :(得分:1)
如果您在使用<div class="common">
Common
</div>
<div class="user-panel" bind-to=".common">
User Panel
</div>
进行请求时遇到错误,并且看到method: :delete
,那么加载UJS文件通常会出现问题。
确保Matches [GET]
已正确打包并正在加载jQuery以及正常运行所需的其他Rails JavaScript。
答案 1 :(得分:0)
我有同样的问题。我通过在application.js
:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
使用:
//= require jquery_ujs
//= require jquery
//= require turbolinks
//= require_tree .
就这么简单:)
答案 2 :(得分:0)
我有一个类似的问题 - 对我而言,我根本没有加载jquery_ujs。 (我在最新版本的bootstrap中遇到了js的一些问题,决定从CDN获得我需要的所有内容,注释掉我的application.js,其中包含对jquery_ujs的引用。