ОБНОВЛЕНИЕ: /* Мне удалось решить проблему, настроив конвейер ресурсов, как описано в Railscasts #282*/
Я использую Devise для аутентификации в своем приложении. Он работал нормально, пока я не добавил гем Rails_admin. В процессе я также перешел на Rails 3.1, так что, возможно, проблема связана с переходом на 3.1.
При выходе получаю:
"Не удалось найти пользователя с id=sign_out"
Он восходит к действию show пользователя_контроллера и в параметрах: {"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
routes.rb
, чтобы понять, что происходит? - person janders223   schedule 06.10.2011after_sign_out_path
- это просто обратный вызов после уничтожения сеанса, и он не даст вам того, что вы хотите. Я никогда не использовал гем rails_admin, и мне придется покопаться в нем больше, прежде чем я смогу узнать больше о том, что происходит. - person janders223   schedule 06.10.2011