Я работаю над приложением каталога библиотеки, которое аутентифицирует администраторов и пользователей. Почему-то я не могу установить after_sign_in_path_for
, так как теперь вход в систему направляется в общедоступный корень, а не в корень каждого пространства имен.
Я уже реализовал пространство имен администратора и аутентификацию администратора, и все работало. Чтобы настроить путь sign_out, я добавил:
# Overwriting the sign_out redirect path method
def after_sign_out_path_for(resource_or_scope)
if resource_or_scope == :user
collection_path
elsif resource_or_scope == :admin
new_admin_session_path
else
root_path
end
end
Я уже включил область пользователя в этот раздел, даже если я еще не реализовал ресурс. Все работало.
Теперь я хочу добавить пользовательский ресурс и пространство имен коллекции, в котором размещен каталог. Поскольку теперь мне нужно указать перенаправление при входе в систему, я завершил application_controller.rb с помощью:
# Overwriting the sign_in redirect path method
def after_sign_in_path_for(resource_or_scope)
if resource_or_scope == :user
collection_opac_path
elsif resource_or_scope == :admin
admin_root_path
else
root_path
end
end
Почему-то меня теперь перенаправляет в основной корень вместо collection_opac_path
или admin_root_path
. Последнее работало до определения after_sign_in_path.
В моем route.rb у меня есть следующие записи:
devise_for :users
devise_for :admins
namespace :collection do
match '/', :to => 'opac#home'
match '/opac', :to => 'opac#opac', :as => :opac
root :to => 'opac#home'
end
namespace :admin do
...
root :to => 'pages#pageadmin'
end
root :to => 'pages#manifesto'
Администратор аутентифицируется на всех контроллерах пространства имен администратора. Пользователь аутентифицируется в действии opac контроллера opac в пространстве имен коллекции.
rake routes
дает:
collection /collection(.:format) collection/opac#home
collection_opac /collection/opac(.:format) collection/opac#opac
collection_root /collection(.:format) collection/opac#home
admin_root /admin(.:format) admin/pages#pageadmin
root / pages#manifesto
Что я делаю неправильно? Как я могу заставить это работать?
Заранее спасибо!
Обновлять
Я думаю, что важно указать, что форма входа пользователя помещается в представление коллекции/домашней страницы, а при отправке и входе в систему она должна перенаправляться в коллекцию/opac, а форма входа администратора появляется при попытке доступа к корню пространства имен администратора.