Навигация
Задача Г: усиливаем приложение за счет использования AJAX
Чем заняться на досуге
• Сейчас опустошенная пользователем корзина исчезает при перерисовке всего оталога. Не могли бы вы изменить код приложения, чтобы для этого исполь¬зовался метод blind_up из библиотеки Script.aculo.us?
• Будет ли работать внесенное вами изменение в браузере с отключенным Java¬Script?
Что нам удалось сделать
На данной стадии мы добавили AJAX в код поддержки корзины.
• Мы переместили корзину покупателя на боковую панель. Затем мы приспосо¬били действие add_to_cart к повторному отображению страницы каталога.
• Мы воспользовались f orm_remote_tag для вызова действия add_to_cart с ис¬пользованием AJAX.
Шаг Г5: возвращение к предыдущему варианту при отключенном JavaScript
Помните, мы сделали так, чтобы корзина стала появляться на боковой панели 1см. подраздел «Шаблонные фрагменты» раздела 9.1). Это было сделано еще до ■ставки в приложение строки AJAX-кода.
Вспомогательные методы
Когда мы хотим удалить какой-то процесс обработки из представления (из любо-то вида представления), нам нужно написать вспомогательный метод. Если вы взглянете на каталог арр, то увидите в нем четыре подкаталога.
;epot> di г арр /w
[.] [..] [controllers] [helpers] [models]
>iews]
Шаг Г4: исчезновение пустой корзины
И еще один запрос от заказчика связан с тем, что в данный момент корзина по¬стоянно находится на боковой панели, даже если в ней ничего нет. А нельзя ли сделать так, чтобы она появлялась лишь тогда, когда в ней что-нибудь содержит¬ся? Ну конечно, можно!
Шаг ГЗ: подсветка изменений
Ране мы уже говорили, что помощник j avascri pt_i nc1ude_tag загружает в брау¬зер несколько библиотек JavaScript. Одна из них, effects.js, позволяет украсить веб-страницу рядом привлекательных эффектов . Один из этих эффектов — небе¬зызвестный (теперь уже) Yellow Fade Technique, то есть постепенно исчезающая желтизна.
Заказчик вечно чем-то недоволен
Мы вполне довольны своими результатами, поскольку внесли изменения в груп-жт программных строк, и наше скучное приложение, созданное по стандартам Зеб 1.0, теперь оживилось благодаря скоростным возможностям AJAX-техно-логии из арсенала Веб 2.0. И вот, затаив дыхание, мы приглашаем заказчика.
Возможные проблемы
Удивительная простота использования AJAX в Rails не защищает от неверных шагов. Поскольку мы имеем дело со свободной интеграцией ряда технологий, по¬нять причины неработоспособности применяемых элементов AJAX-технологии будет непросто. Поэтому на каждом этапе мы добавляем к приложению не более одной функции AJAX.
Шаг Г2: корзина, использующая технологию АJАХ
AJAX позволяет создавать код, выполняемый на стороне браузера и взаимодейст¬вующий с приложением, находящимся на сервере. В нашем случае мы хотели бы заставить кнопку Добавить в корзину вызывать серверное действие add_to_cart в фоновом режиме.
Смена направления
Теперь, когда корзина отображается на боковой панели, мы можем изменить ха¬рактер работы кнопки Добавить в корзину. Вместо отображения отдельной стра¬ницы корзины ей нужно будет всего лишь обновить главную страницу каталога.