ОБНОВЛЕНИЕ: / * Мне удалось устранить проблему, настроив конвейер ресурсов, как описано в Railscasts # 282 * /
Я использую Devise для аутентификации в моем приложении. Он работал нормально, пока я не добавил гем Rails_admin. Я также перешел на Rails 3.1, поэтому, возможно, проблема в переходе на 3.1.
При выходе я получаю:
"Не удалось найти пользователя с id = sign_out"
Прослеживается до действия show users_controller и в параметрах: {"id"=>"sign_out"}
Ссылка на выход находится в макете приложения:
<%= link_to 'User Sign Out', destroy_user_session_path, :method => :delete %>
Соответствующий маршрут:
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
Эта проблема похожа на: Проблема при выходе с Devise на моем приложении , за исключением того, что я указываю метод удаления.
Следуйте. , нашел этот метод в Devise:
def after_sign_out_path_for(resource_or_scope)
root_path
end
Может кто-нибудь сказать мне, как копать дальше? То есть как найти 'resource_or_scope'? Root_path отлично выглядит в маршрутах.
Вот мои маршруты. Rb:
Notebook::Application.routes.draw do
mount RailsAdmin::Engine => '/admin', :as => 'rails_admin'
devise_for :owners
match '/user' => 'users#dashboard', :as => :user_root
match '/customer' => 'customers#dashboard', :as => :customer_root
match 'users/dashboard' => 'users#dashboard'
match 'customers/dashboard' => 'customers#dashboard'
devise_for :users
devise_for :customers
resources :users
resources :customers, :only => [:index, :show, :edit, :update, :destroy]
root :to => 'misc#landing'
end