/ / Rails 3 Devise - "Keine Route gefunden" / users / sign_out "" - Ruby-on-Rails, Ruby, Authentifizierung, Devise, Routen

Rails 3 Devise - Getting "Keine Route passt" / Benutzer / sign_out "" - Ruby-on-Rails, Ruby, Authentifizierung, Geräte, Routen

Keine Route stimmt mit "/ users / sign_out" überein. Wenn ich angemeldet bin. Ich bin einfach dem Tutorial von ryan bates gefolgt, um das Arbeiten zu unterstützen. Meine Rechenwege sehen so aus.

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

Danke im Voraus.

Antworten:

4 für die Antwort № 1

Die Routen sehen korrekt aus. Ihr Abmelde-Link sollte folgendermaßen aussehen:

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

0 für die Antwort № 2

Ich gehe davon aus, dass die andere Antwort Ihr Problem gelöst hat. Wenn Sie wissen wollen, warum, schauen Sie sich den Abschnitt in an diese Installationsanleitung für Schienen 3.1 mit Gerät. Wenn Sie versuchen, die Abmelde-Route über HTTP GET zu erhalten, existiert sie nicht, da sie nur für HTTP DELETE eingerichtet ist. Sie können dies in der zweiten Spalte der Routen sehen, die Sie in die Frage eingefügt haben. Wahrscheinlich fehlten Ihren Links die

:method => :delete

In diesem Lernprogramm erfahren Sie außerdem, wie Sie die Verwendung der GET-Methode im Testmodus einrichten. Ändern Sie /config/initializers/devise.rb wie folgt:

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