注销错误:没有路由匹配[GET]“/ users / sign_out”

时间:2013-04-29 05:03:54

标签: ruby-on-rails ruby devise

这个错误一直在推动我和一个开发者疯狂。我们正在使用Ruby / Rails jazz构建应用程序,每当我点击退出用户会话时,我都会收到此错误:

Routing Error

No route matches [GET] "/users/sign_out"
Try running rake routes for more information on available routes.

现在我已经跑了很多rake路线了,我得到了:

new_user_session GET    /users/sign_in(.:format)       devise/sessions#new
            user_session POST   /users/sign_in(.:format)       devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
           user_password POST   /users/password(.:format)      devise/passwords#create
       new_user_password GET    /users/password/new(.:format)  devise/passwords#new
      edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                         PUT    /users/password(.:format)      devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)        devise/registrations#cancel
       user_registration POST   /users(.:format)               devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)          devise/registrations#edit
                         PUT    /users(.:format)               devise/registrations#update
                         DELETE /users(.:format)               devise/registrations#destroy
                    root        /                              home#index
                   about        /about(.:format)               home#about

这里有什么要做的吗?我也跟着Stack Overflow上很多帖子的答案都无济于事。还有什么我可以测试来试图解决这个问题吗?

编辑:这是注销链接代码

<a href="/users/sign_out" class="header-links right-link" data-method="delete" rel="nofollow">Logout</a

4 个答案:

答案 0 :(得分:1)

检查HTML并确保加载了rails.js,并且没有javascript错误。如果您使用的是jQuery,请确保有noConflict

注意:我的猜测是你正在运行rails版本&lt; 3.1,请检查布局中是否存在这两行

<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>

答案 1 :(得分:1)

尝试:

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

答案 2 :(得分:1)

你的路线在“devise_for”下有这个吗? :

get 'users/sign_out' => 'sessions#destroy', :as => :destroy_user_session

试试这个链接:

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

答案 3 :(得分:0)

检查您的routes.rb是否有,

devise_for :users, ActiveAdmin::Devise.config

有时我的安装似乎错过了这部分ActiveAdmin::Devise.config,然后我收到此错误。

我在gem's generator中看到了它,但有时它不会添加到我的应用中。