Подтвердить что ты не робот

Предоставление макета по умолчанию для представлений в пространстве имен

У меня есть серия контроллеров и связанных представлений в моем приложении, которые существуют внутри пространства имен Admin. Я хочу, чтобы эти представления использовали другой макет, чем те, что были в основном пространстве имен, поэтому я могу дать им другой внешний вид на обычном сайте. Есть ли способ, которым я могу это сделать, используя встроенные функции Rails? Я знаю, что если у меня есть класс PostController и создайте представление posts.html.erb в каталоге макетов, это будет использоваться в качестве макета для любого из представлений контроллера, есть ли что-то подобное для диспетчеров с именами?

4b9b3361

Ответ 1

Создайте собственный класс AdminController для ваших контроллеров администрирования, которые вы собираетесь наследовать. Этот AdminController наследует от ApplicationController и переопределяет макет.

class AdminController < ApplicationController   
  layout "admin" 
end

class Admin::PostController < AdminController 
end

Ответ 2

Нет необходимости в методе layout. Вы должны поместить ваши файлы макета для пространства имен в views/layouts/<namespace>.

Пример пространства имен с именем 'foo':

Контроллер: app/controllers/foo/bar_controller.rb

Макет для этого контроллера: app/views/layouts/foo/bar.html.erb

Ответ 3

Я верю, что вы получите точный ответ на свой вопрос в этом прекрасном скринкасте Райана Бейтса.

http://railscasts.com/episodes/269-template-inheritance

(т.е. если вы используете Rails 3.1)

Ответ 4

Вы можете переопределить макет по умолчанию для любого контроллера с помощью layout method