Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
} </style> </head> #{content}</html>Теперь воспользуемся новым элементом в файле
template/books/find.xhtml<Layout title='Details for #{@title}'> <h1>#{@title}</h1> <h2>#{@author}</h2> <p>Page last updated: #{@last_update}</p></Layout>Все содержимое элемента
Layoutcontentlayout.xhtmlLayout@titlelayout.xhtmlВам это напоминает вызов метода с передачей ему аргументов? Так оно и есть. Мы можем определить разметку в виде класса Ruby (
src/element/layout2.rbrequire 'nitro/element'class Layout2 < Nitro::Element def render %^<html> <head> <title>#{@title}</title> <style> body { background-color: white; font-family: sans-serif; } </style> </head> #{content} </html>^ endendА затем изменим файл
find.xhtmlLayout2run.rbЧасто встречаются большие фрагменты кода, содержащие логику, общую для нескольких приложений. Например, во многих Web-приложениях есть понятие учетной записи пользователя и авторизации. Чем заново писать код для каждой такой программы, можно включить уже готовый: это сэкономит время и упростит сопровождение.
Такой вид повторного использования называется частью. Часть (part) — это, по существу, мини-сайт, реализующий одну конкретную функцию. (В дистрибутив Nitro входит одна такая часть под названием
Adminrun.rbЕстественно, части хранятся в папке
part<app_root>/part/users<app_root>/part/users.rb<app_root>/part/users/public/<app_root>/part/users/controller.rb<app_root>/part/users/model/user.rb<app_root>/part/users/model/acl.rb<app_root>/part/users/template/login.xhtml<app_root>/part/users/template/form.xinc<app_root>/part/users/run.rbГлавный файл
run.rbrequirerequire 'part/users'Теперь Nitro будет рассматривать весь код в каталоге
part/usersparttemplateЧасто приложение должно отображать повторяющиеся данные; обычно они оформлены в виде HTML-таблицы в шаблоне. Если число строк заранее не известно, то придется обойти какой-то набор.
Можно встроить код Ruby непосредственно в шаблон, но Nitro предлагает специальный механизм конвейерной компиляции, чтобы упростить программирование типичных логических конструкций.
Конвейерная компиляция — это последовательность преобразований, которым подвергаются шаблоны по мере объединения в действия. Существуют классы преобразования для различных задач, в частности статического включения файлов, XSLT-преобразований и локализации. Класс
MorphingВ нашем демонстрационном приложении данных мало, но если представить себе много авторов, каждый из которых написал несколько книг, то можно было бы показать список книг данного автора. Метод контроллера поместил бы в переменную
@books<h4>Books by #{@author}</h4><ul> <li each="book in @books" > #{book.title}</li></ul>Класс
Morphing<?r for book in @books ?><li>#{book.title} </li><?r end ?>Порожденная таким образом разметка передается следующему этапу конвейера.
Точно так же для повтора элемента можно использовать атрибут
times<img src='/img/ruby.png' alt='*' times='@book.rating' />
