/ / Rails 3 Devise - Ottenere "Nessuna corrispondenza percorso" / users / sign_out "" - ruby-on-rails, ruby, autenticazione, ideare, route

Rails 3 Devise - Ottenere "Nessun percorso corrisponde" / users / sign_out "" - ruby-on-rails, ruby, autenticazione, ideazione, rotte

Nessuna route corrisponde a "/ users / sign_out" Quando ho effettuato l'accesso. Ho appena seguito il tutorial di Ryan Bates per far funzionare il dispositivo. I miei percorsi di rastrello sono così.

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

Grazie in anticipo.

risposte:

4 per risposta № 1

I percorsi sembrano corretti. Il link di disconnessione dovrebbe essere simile al seguente:

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

0 per risposta № 2

Presumo che l'altra risposta abbia risolto il tuo problema. Se vuoi sapere perché, dai un'occhiata alla sezione in questa guida all'installazione per binari 3.1 con escavatore. Fondamentalmente, quando si tenta di HTTP RICEVERE la route di disconnessione, non esiste perché è impostata solo per DELETE HTTP. Puoi vederlo nella seconda colonna dei percorsi incollati nella domanda. Probabilmente mancava il tuo link

:method => :delete

Anche in questo tutorial, puoi vedere come configurare escogitare l'uso del metodo GET quando è in modalità test. Cambia /config/initializers/devise.rb come segue:

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