2011-09-22 55 views
0

没有路由匹配“/ users/sign_out”当我登录时,我只是按照ryan bates教程来获取设计工作。我的耙路线看起来像这样。Rails 3 Devise - 获取“无路由匹配”/ users/sign_out“”

 new_user_session GET /users/sign_in(.:format)  {:action=>"new", :controller=>"devise/sessions"} 
      user_session POST /users/sign_in(.:format)  {:action=>"create", :controller=>"devise/sessions"} 
    destroy_user_session DELETE /users/sign_out(.:format)  {:action=>"destroy", :controller=>"devise/sessions"} 
      user_password POST /users/password(.:format)  {:action=>"create", :controller=>"devise/passwords"} 
     new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"} 
     edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"} 
         PUT /users/password(.:format)  {:action=>"update", :controller=>"devise/passwords"} 
cancel_user_registration GET /users/cancel(.:format)  {:action=>"cancel", :controller=>"devise/registrations"} 
     user_registration POST /users(.:format)    {:action=>"create", :controller=>"devise/registrations"} 
    new_user_registration GET /users/sign_up(.:format)  {:action=>"new", :controller=>"devise/registrations"} 
    edit_user_registration GET /users/edit(.:format)   {:action=>"edit", :controller=>"devise/registrations"} 
         PUT /users(.:format)    {:action=>"update", :controller=>"devise/registrations"} 
         DELETE /users(.:format)    {:action=>"destroy", :controller=>"devise/registrations"} 
        root  /(.:format)     {:controller=>"welcome", :action=>"index"} 

在此先感谢。

+1

现在是否适用于您?请标记其中一个解决方案,或告诉我们为什么它不适合您。 – KobeJohn

回答

4

路线看起来正确。您的退出链接应如下所示:

<%= link_to('Logout', destroy_user_session_path, :method => :delete) %> 
0

我假设其他答案可以解决您的问题。如果你想知道为什么,请查看this setup guide中有关设计的rails 3.1的章节。基本上,当您尝试HTTP GET注销路由时,它不存在,因为它只设置为HTTP DELETE。您可以在问题中粘贴的路线的第二列中看到此内容。也许你的链接是在该教程还缺少

:method => :delete 

,你可以看到如何设置设计使用GET方法时,它处于测试模式。更改/config/initializers/devise.rb,如下所示:

# The default HTTP method used to sign out a resource. Default is :delete. 
config.sign_out_via = Rails.env.test? ? :get : :delete 
相关问题