Программирование на языке Ruby
Шрифт:
Главный файл
Теперь Nitro будет рассматривать весь код в каталоге
Часто приложение должно отображать повторяющиеся данные; обычно они оформлены в виде HTML-таблицы в шаблоне. Если число строк заранее не известно, то придется обойти какой-то набор.
Можно встроить код Ruby непосредственно в шаблон, но Nitro предлагает специальный механизм конвейерной компиляции, чтобы упростить программирование типичных логических конструкций.
Конвейерная компиляция — это последовательность преобразований, которым подвергаются шаблоны по мере объединения в действия. Существуют классы преобразования для различных задач, в частности статического включения файлов, XSLT-преобразований и локализации. Класс
В нашем демонстрационном приложении данных мало, но если представить себе много авторов, каждый из которых написал несколько книг, то можно было бы показать список книг данного автора. Метод контроллера поместил бы в переменную
Класс
Порожденная таким образом разметка передается следующему этапу конвейера.
Точно так же для повтора элемента можно использовать атрибут
будет преобразован в следующий код:
19.4.5. Прочие детали
В Nitro слишком много различных механизмов, чтобы все их можно было рассмотреть здесь. Но в этом разделе мы упомянем некоторые особенно приятные «вкусности».
В состав Nitro входит вспомогательный код, позволяющий использовать многочисленные библиотеки JavaScript, которые поддерживают различные формы DHTML и Ajax. Для облегчения интеграции в Nitro применяется высокоуровневый синтаксис. Например, в дистрибутиве Nitro есть пример поиска по сайту Flickr и вывода уменьшенных изображений. Текстовое поле для ввода тегов поиска поддерживает технологию Ajax, что достигается следующей разметкой:
Контроллер реализует метод
Nitro позволяет кэшировать действия (то есть отрисованные страницы целиком), результаты вызова методов и сгенерированные фрагменты текста. Например, чтобы поместить в кэш результат отрисовки страницы index, контроллер должен вызвать следующий метод:
Кэширование можно добавить и в сегменты кода:
В Nitro встроен класс преобразования для локализации, позволяющий автоматически подставлять в шаблон то или иное содержимое. Он не является стандартным этапом конвейерной компиляции, вы сами должны добавить его в файл
Отметим, что конвейер можно переконфигурировать, выбросив стандартные преобразования и добавив собственные. Далее определяются локали:
Локаль — это просто YAML-файл, сопоставляющий одним строкам другие:
В шаблонах применяются специальные конструкции для обозначения подставляемого текста:
Хроники Тамула. Трилогия
Тамули
Фантастика:
фэнтези
рейтинг книги
Сумерки божков
1. Романы
Проза:
русская классическая проза
рейтинг книги
Грусть белых ночей
Библиотека "Дружбы народов"
Проза:
советская классическая проза
рейтинг книги
Миллион приключений (сборник)
15. Отцы-основатели - Русское пространство. Кир Булычев - Собрание сочинений
Фантастика:
научная фантастика
рейтинг книги
Т. 13 Число зверя
13. Отцы-основатели. Весь Хайнлайн
Фантастика:
научная фантастика
рейтинг книги
Газлайтер. Том 15
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
12 великих комедий
Вожди Советского Союза
Проза:
классическая проза
рейтинг книги
Новая хронология Греции
Научно-образовательная:
история
рейтинг книги
Я не царь. Книга XXIV
24. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
Газлайтер. Том 40
40. История Телепата
Фантастика:
альтернативная история
аниме
попаданцы
рейтинг книги
Одержимый
Top Thriller
Детективы:
триллеры
маньяки
рейтинг книги