Вообще говоря, Rails будет использовать макет приложения, если нет макета, соответствующего контроллеру.Например, если у вас есть PeopleController, Rails будет искать layouts / people.html.erb, а если он этого не найдет, application.html.erb.
Вы можете явно указать конкретный макет, если выхотите переопределить это соглашение.
class Admin::PeopleController
layout 'some_layout'
end
Этот контроллер будет затем использовать some_layout.html.erb вместо поиска people.html.erb и application.html.erb.
Но это может быть лучше, если вы хотите сгруппировать вещи: Если у вас есть базовый AdminController, который наследует от ApplicationController, вы можете, скажем, Admin :: PersonController наследовать от AdminController, и он будет наследоватьмакет администратора.
Я не знаю особенностей вашего кода, но у вас может быть:
class AdminController
def show
#render a template linking to all the admin stuff
end
end
app/controllers/admin/people_controller.rb:
class Admin::PeopleController < AdminController
#your awesome restful actions in here!
end
views/layouts/admin.html.erb:
Hello from the Admin!
<%= yield %>
Единственное, что нужно понять, это то, что Admin :: PeopleController унаследует любые действия, которыеAdminController определен (так же, как все, что определено в ApplicationController, становится доступным во всех подклассах).Как правило, это не проблема, так как вы, скорее всего, будете переписывать методы, но просто для того, чтобы знать об этом.Если у вас нет AdminController, вы можете создать его без каких-либо действий только для целей макета.