Rails 3 Devise - Получение "Нет совпадений маршрутов" / users / sign_out "" - PullRequest
0 голосов
/ 22 сентября 2011

Не найдено ни одного маршрута. "Мои рейк-маршруты выглядят так.

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

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 22 сентября 2011

Маршруты выглядят правильно. Ваша ссылка для выхода должна выглядеть следующим образом:

<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
0 голосов
/ 20 января 2012

Полагаю, другой ответ решил вашу проблему.Если вы хотите узнать почему, ознакомьтесь с разделом данного руководства по настройке для рельсов 3.1 с устройством devise.По сути, когда вы пытаетесь HTTP получить маршрут выхода, он не существует, потому что он настроен только для 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
...