Ruby on Rails devise http://0.0.0.0:3000/users/sign_out выдает ошибку маршрутизации

#ruby-on-rails #ruby #devise #ruby-on-rails-3.1

#ruby-on-rails #ruby #разработка #ruby-on-rails-3.1

Вопрос:

routes.rb =>

 Sendemail::Application.routes.draw do
    devise_for :users

    get "user/index"

    get "home/index"

    root :to => 'home#index'
end
  

грабли маршрутов =>

         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"}
       user_confirmation POST   /users/confirmation(.:format)     {:action=>"create", :controller=>"devise/confirmations"}
   new_user_confirmation GET    /users/confirmation/new(.:format) {:action=>"new", :controller=>"devise/confirmations"}
                         GET    /users/confirmation(.:format)     {:action=>"show", :controller=>"devise/confirmations"}
              user_index GET    /user/index(.:format)             {:controller=>"user", :action=>"index"}
              home_index GET    /home/index(.:format)             {:controller=>"home", :action=>"index"}
                    root        /                                 {:controller=>"home", :action=>"index"}
  

Когда я набираю rails server, я получаю это сообщение каждый раз =>

 /home/user1/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV
  

Для «http://0.0.0.0:3000/users/sign_out «

 Routing Error

No route matches [GET] "/users/sign_out"
  

Что я должен сделать, чтобы решить эту проблему?

Ответ №1:

Обратите внимание, что в ваших маршрутах указано, что /users/sign_out — это запрос на УДАЛЕНИЕ. Большинство браузеров по умолчанию не выполняют запросы на УДАЛЕНИЕ. Просто переход к этому URL-адресу будет запросом GET к /users/sign_out .

Этот способ добавления ссылок для выхода должен помочь вам заставить его работать.

Комментарии:

1. Спасибо, это работает, но как я могу избавиться от этого сообщения? /home/user1/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: предупреждение: уже инициализирована константа WFKV

2. Я думаю, что это не имеет отношения к данному вопросу.

3. Да, это может быть не связано, но как я могу это решить? Должен ли я начать новый поток для этого?

4. Я думаю, что было бы лучше всего задать новый вопрос, если он еще не существует.

Ответ №2:

Добавьте :method => :delete ссылку для входа.