Навигация
Задача Д: оформление покупки
10.2. Что нам удалось сделать
За сравнительно короткий промежуток времени нам удалось сделать следующее:
• Добавить таблицы orders и 1 i ne_i terns (и соответствующие им модели) и ус¬тановить связи между ними.
• Создать форму для сбора сведений, необходимых для оформления заказа, и при¬вязать ее к модели заказа (order).
Корректировка предыдущего АJАХ-кода
После того как заказ принят, мы возвращаемся на страницу каталога с отображе¬нием радостного флэш-сообщения: «Спасибо за Ваш заказ».
Получение сведений о заказе
Теперь создадим в контроллере действие save_order. Возложим на него следую¬щие функции.
1. Прием значений формы и заполнение ими нового модельного объекта Order.
2. Добавление к этому объекту записей о товарах, взятых из корзины покупателя.
Создание формы для ввода информации о заказе
Теперь, когда у нас есть таблицы и модели, можно приступать к процессу оформления заказа. Сначала нам нужно добавить к корзине кнопку Оформить заказ и свя¬жет, ее в контроллере магазина (store) с действием оформления заказа (checkout).
Лсгинг файла app/views/store/_cart.rhtml
class="cart-title" >Ваша Kop3HHa «tafile>
Взаимосвязи моделей
Теперь база данных знает о взаимосвязях между записями товаров (1 i ne i terns), заказами (orders) и товарами (products). Но Rails-приложение об этом не знает. Нам необходимо добавить к файлам модели некоторые объявления, определяю¬щие характер их взаимосвязей.
10.1. Шаг Д1: регистрация заказа
Заказ представляет собой набор записей товаров, дополненный подробностями, необходимыми для оформления покупки. Некоторое подобие записей товаров у нас уже есть. В нашей корзине содержатся отобранные товары, но пока у нас нет для них таблицы базы данных. У нас также нет таблицы для хранения информа¬ции о заказах.
Задача Д: оформление покупки
Подведем итоги. На данный момент мы собрали воедино основную систему веде¬ния перечня товара, создали каталог и получили довольно привлекательную кор¬зину покупателя. А теперь нам нужно дать покупателю реальную возможность приобрести содержимое корзины. Давайте реализуем функцию оформления по¬купки.