Книга: Программирование на языке Ruby
19.6.3. Передача управления компоненту
19.6.3. Передача управления компоненту
Бывает полезно разнести логику приложения по нескольким классам компонентов. Мы видели, как можно отобразить URL на компоненты. Имеется также способ передать управление, не изменяя базового пути в URL.
Добавим в файл Main.iwa
метод для обработки щелчка по ссылке в меню десертов:
def dessert_choice
new_page = page_named( 'DessertChoice')
new_page.choice = @dessert_item
yield new_page
end
Также изменим цикл формирования списка десертов в Main.html
:
<ul oid="dessert_list">
<li><a oid= 'dessert_choice'>@dessert_item</a></li>
</ul>
Тут происходит немало интересного; атрибут oid
элемента ul
управляет формированием цикла, а такой же атрибут элемента а создает специальную ссылку на только что добавленный метод dessert_choice
. Для довершения дела странице передается еще и текст ссылки (хотя и несколько загадочным способом). Метод dessert_choice
сам по себе короткий, в нем вызывается метод page_named
для создания экземпляра еще одного класса компонента DessertChoice
. Для передачи выбранного десерта вызывается метод choice=
. Затем yield
передает управление новому компоненту.
Новый компонент также определяется с помощью пары файлов с расширениями .iwa
и .html
. Вот код класса:
class DessertChoice < Iowa::Component
attr_accessor :choice
def details
"Детали #{@choice} нужно было брать из базы данных."
end
end
А в файле DessertChoice.html
хранится разметка:
<html>
<head><title>Выбранный вами десерт</title></head>
<body>
<h1>Десерт!</h1>
<p>@details</p>
</body>
</html>
Об IOWA можно было бы рассказывать еще долго. Для получения дополнительной информации зайдите на домашнюю страницу IOWA (http://enigo.com/proiects/iowa/) или на страницу проекта IOWA на сайте RubyForge (http://rubyforge.org/projects/iowa).
- Основные "рычаги" управления производительностью
- Передача прав
- Категорийный менеджмент. Курс управления ассортиментом в рознице
- 1. Системы управления базами данных
- 4.8 Методы управления Fibre Channel
- 7.9 Будущее управления хранилищами по версии ассоциации SNIA: стандарты SMI
- 15.1.3. Обработка сигналов управления заданиями
- Группа управления конфигурацией ПО
- Системные вызовы управления процессорной привязкой
- Глава 2 Комбинированная система управления
- 6.4.2. Передача номенклатурных позиций между ячейками склада
- Почему я не нахожу в Панели управления описанных пунктов?