Создать представление "основного макета" в Rails? - PullRequest
2 голосов
/ 26 июля 2010

Хорошо, поэтому у меня есть небольшой проект с двумя разными скаффолдингами, которые я сделал. В каталоге раскладок для этого есть два разных файла layout.html.erb.

Мой вопрос заключается в том, как сжать это в один основной файл макета, который разделяют два представления с поддержкой скаффолдинга.

В основном моя цель для этого состоит в том, чтобы у меня была только навигационная панель изаголовок и другие подобные вещи все в одном месте.

Ответы [ 2 ]

5 голосов
/ 26 июля 2010

если вы назовете файл макета application.html.erb, то это будет файл макета по умолчанию.Если вы указываете файл макета с тем же именем вашего контроллера, он переопределяет макет по умолчанию.

Из направляющих Rails:

Чтобы найти текущий макет, Rails сначала ищетфайл в app / views / layouts с тем же базовым именем, что и контроллер.Например, для рендеринга действий из класса PhotosController будет использоваться app / views / layouts / photos.html.erb (или app / views / layouts / photos.builder).Если такого макета для конкретного контроллера нет, Rails будет использовать app / views / layouts / application.html.erb или app / views / layouts / application.builder.Если макета .erb нет, Rails будет использовать макет .builder, если он существует.Rails также предоставляет несколько способов более точно назначить определенные макеты отдельным контроллерам и действиям.

source: http://guides.rails.info/layouts_and_rendering.html

EDIT:

Я должен добавить, чтоможно указать любой макет в качестве используемого по умолчанию в Контроллере приложений:

class ApplicationController < ActionController::Base
  layout 'some_layout_name'
end

И это переопределит совпадение имен, которое делает рельсы автоматически.

Надеюсь, это поможет!

0 голосов
/ 26 июля 2010

Вы можете иметь application.html.erb в вашем каталоге раскладок, который будет использоваться всеми видами

...