Книга: Программирование на языке Ruby
19.6.2. Шаблоны в IOWA
19.6.2. Шаблоны в IOWA
Большинство Web-приложений только выигрывает от разделения кода и шаблонов представления, но IOWA, как и Nitro, позволяет вообще обходиться без компонентов и помещать весь код на Ruby в представление. Ниже приведен файл PureView.html, содержащий как код класса, так и HTML-разметку:
<%
class PureView < Iowa::Component
def right_now
Time.now
end
end
%>
<html>
<head><titlе>Автономный вид</title></head>
<body>
<р>Текущее время @right_now.</p>
</body>
</html>
Но, в отличие от Nitro, это работает только в том случае, когда для представления нет соответствующего компонента. Если имеются оба файла, то IOWA не станет анализировать код, встроенный в HTML-файл.
Шаблон может содержать циклы и условные предложения. Добавим такой метод в файл Main.iwa
:
def after_dinner?
Time.now.hour >19
end
Тогда можно реализовать в Main.html
условную прорисовку с помощью элемента if
:
<if oid='after_dinner?'>
<р>Обед закончен. Что на десерт?</р>
</if>
Хороший вопрос! Что на десерт? Пусть IOWA и ответит. Мы поручим Main.iwa
подготовить меню десертов в виде массива:
def desserts
%w{
Пирожные
Печенье
Фрукты
Мороженое
}
end
А в файле Main.html
выведем его. Изменим содержимое элемента if
, включив список десертов:
<р>Обед закончен. Вот что мы можем предложить на десерт:</р>
<ul oid="dessert_list">
<li>@dessert_item</li>
</ul>
</if>
<p>
Мы еще должны сообщить IOWA, что выводить на каждой итерации, поэтому в конце файла Main.iwa
после определения класса добавим раздел определения связей:
<?
dessert_list {
item = dessert_item
list = desserts
} ?>
Тем самым производится связывание списка dessert_list
в шаблоне. На каждой итерации элемент списка заполняется из переменной dessert_item
, а данные в целом поступают от метода компонента desserts
.
- 19.6. Разработка Web-приложений с помощью IOWA
- Часть III. Шаблоны разработки через тестирование
- Шаблоны
- Вы пока не видите поведенческие шаблоны?
- Именованные шаблоны
- 28. Шаблоны зеленой полосы
- Простые графические шаблоны
- Шаблоны убеждающих писем
- Раздел Шаблоны
- Административные шаблоны
- Шаблоны безопасности
- Стандартные шаблоны безопасности