簡體   English   中英

Rails 3 Devise-獲取“沒有路線匹配” / users / sign_out“”

[英]Rails 3 Devise - Getting “ No route matches ”/users/sign_out“ ”

沒有路線匹配“ / users / sign_out”。登錄后,我只是按照ryan bates教程進行操作。 我的耙路看起來像這樣。

       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"}

提前致謝。

路線看起來正確。 您的登出鏈接應如下所示:

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

我認為另一個答案解決了您的問題。 如果您想知道為什么,請使用devise查閱本安裝指南中有關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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM