/ / Rails 3 Devise - Pierwsze "Brak pasujących tras" / users / sign_out "" - ruby-on-rails, ruby, uwierzytelnianie, devise, trasy

Rails 3 Devise - Pierwsze "Brak pasujących tras" / users / sign_out "" - ruby-on-rails, ruby, uwierzytelnianie, devise, trasy

Żadna trasa nie pasuje "/ users / sign_out" Kiedy jestem zalogowany. Po prostu poszedłem za tutorialem o ryan bates, żeby przygotować się do pracy. Moje trasy rake wyglądają tak.

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

Z góry dziękuję.

Odpowiedzi:

4 dla odpowiedzi № 1

Trasy wyglądają poprawnie. Twój link wylogowania powinien wyglądać tak:

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

0 dla odpowiedzi nr 2

Zakładam, że druga odpowiedź rozwiązała twój problem. Jeśli chcesz wiedzieć dlaczego, sprawdź sekcję w ten przewodnik konfiguracji dla szyn 3.1 z urządzeniem. Zasadniczo, gdy próbujesz HTTP GET trasę wylogowania, nie istnieje, ponieważ jest to tylko ustawienie dla HTTP DELETE. Możesz to zobaczyć w drugiej kolumnie tras wklejonych w pytaniu. Prawdopodobnie twoje linki nie zawierały

:method => :delete

Również w tym samouczku można zobaczyć, jak skonfigurować programowanie, aby użyć metody GET, gdy jest w trybie testowym. Zmień /config/initializers/devise.rb w następujący sposób:

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