Простое «перемещение» Devise в пространство имен администратора неверно. Devise использует контроллеры типа Devise::SessionsController
, которые не могут быть «перемещены».
Я обычно создаю свои собственные контроллеры и наследую их от Devise:
class Admin::SessionsController < ::Devise::SessionsController
layout "admin"
# the rest is inherited, so it should work
end
И настройте это в config/routes.rb
:
devise_for :admins, :controllers => { :sessions => "admin/sessions" }
Или вы можете изменить только макет, сделав макет немного более сложным:
class ApplicationController < ActionController::Base
layout :layout
private
def layout
if devise_controller? && devise_mapping.name == :admin
"admin"
else
"application"
end
end
end