/ / Rails 3 Devise-「ルート一致なし」/ users / sign_out「」の取得-ruby-on-rails、ruby、認証、devise、routes

Rails 3 Devise - "No route matches" / users / sign_outを取得する " - ruby​​-on-rails、ruby、authentication、devise、routes

ログイン時に「/ 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"}

前もって感謝します。

回答:

回答№1は4

ルートは正しく見えます。サインアウトリンクは次のようになります。

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

回答№2の場合は0

他の答えがあなたの問題を解決したと思います。理由を知りたい場合は、のセクションをご覧ください このセットアップガイド deviseを使用したRails 3.1用。 基本的に、サインアウトルートをHTTP GETしようとすると、HTTP DELETEのセットアップのみであるため、存在しません。これは、質問で貼り付けたルートの2列目に表示されます。おそらくあなたのリンクが欠落していました

: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