Могу ли я наследовать шаблон erb? - PullRequest
6 голосов
/ 28 февраля 2010

Есть ли способ заставить шаблон наследовать другой шаблон? Я не использую Rails.

Ответы [ 4 ]

6 голосов
/ 04 апреля 2011

Мне также очень нравится наследование шаблонов django, но оно недоступно, по крайней мере, для sinatra.

В книге sinatra объясняется, как можно использовать layout.erb для определения стандартного макета страницы:

Вам просто нужно определить views/layout.erb файл с чем-то вроде:

<html>
  <head>..</head>
  <body>
    <%= yield %>
  </body>
</html>

А затем, например, назовите свой шаблон erb с erb :index. Sinatra отобразит оба шаблона и включит содержимое вашего индекса в результат рендеринга layout.erb.

5 голосов
/ 01 марта 2010

То, что вы ищете, это частичные и макеты . Вы можете определить макет как контейнер для вашей страницы, который имеет глобальные элементы дизайна (включая CSS и javascript, верхние и нижние колонтитулы и т. Д. В этом представлении вы можете yield перейти к другому шаблону, и этот шаблон может отобразить partials .

2 голосов
/ 01 марта 2010

Нет, вы не можете наследовать шаблон erb - это не класс. Это просто файл.

EDIT:

Согласно комментарию @ Dan, я взглянул на наследование шаблонов Django, и оно очень похоже на Rails content_for. Однако я не знаю, как использовать его вне Rails. Взгляните здесь в пунктах 3.2 и 3.3 и здесь .

0 голосов
/ 03 января 2013

Теперь есть фреймворк Rango , первый фреймворк Ruby с наследованием шаблонов и не зависящий от фреймворка шаблон наследования гем, извлеченный из него.

...