Навигация
Задача В: создание корзины
Чем заняться на досуге
Вот несколько заданий, которые вы можете попробовать выполнить самостоя¬тельно.
Что нам удалось сделать
Мы провели напряженный и продуктивный рабочий день. Мы добавили к наше¬му магазину корзину покупателя, а заодно углубились в некоторые весьма изящ¬ные свойства Rails.
• Мы использовали сессии для хранения текущего состояния.
• Создавали и объединяли модели, не использующие базы данных.
Шаг В4: завершение работы над корзиной
Теперь мы знаем, что для реализации функции опустошения корзины нам нужно будет добавить к ней ссылку и создать в контроллере магазина (store) метод empty_cart. Начнем с шаблона. Вместо использования гиперссылки воспользу¬емся методом button_to и поместим кнопку на страницу.
Листинг файла app/views/store/add_to_rart.rhtml <п1>Ваша корзина
Шаг ВЗ: обработка ошибок
После изучения страницы, показанной на рис. 8.2, становится очевидным, что на¬ше приложение сообщило об исключительной ситуации, возникшей при выпол¬нении кода строки 16, принадлежащей контроллеру магазина (store). В этой строке содержится следующий код:
sroduct = Product.find(params[:id])
Шаг В2: усовершенствованная корзина
Видимо, нам нужно найти способ подсчета каждого вида товара в нашей корзине. Создадим новый класс модели, Cart Item, в котором будет содержаться как ссыл¬ка на товар, так и количество этого товара.
Листинг файла app/models/cart_item.rb r'.ass Cartltem
attr_reader :product, :quantity
def initialize(product) ^product = product ©quantity = 1
end
def increment_quantity
quantity += 1
end
def title
©product.title
end
Шаг В1: создание корзины
К сессиям мы обратились потому, что нашу магазинную корзину где-то надо было хранить. Мы разобрались во всем, что касается сессии, так давайте перей¬дем к созданию корзины. И до поры до времени не будем ничего усложнять.
Корзины и сессии
Итак, после того как мы прошлись по теории, пора вспомнить о том, где мы нахо¬димся на пути практического воплощения наших замыслов. Нам необходимо по¬лучить возможность сначала назначить сессии новый объект, представляющий
Размещение сессий в базе данных
Rails облегчает хранение данных сессии в базе данных. Для создания базы дан¬ных с соответствующей структурой нам нужно будет запустить две Rake-задачи.
Сессии
Прежде чем приступать к нашему следующему, несомненно, успешному шагу, нам нужно уделить немного времени рассмотрению сессий, веб-приложений и Rails. Просматривая наш интерактивный каталог, покупатель (как мы надеемся) вы¬берет товары для покупки.
Задача В: создание корзины
Теперь, когда мы можем отобразить каталог, содержащий описание всех самых замечательных товаров, неплохо было бы получить возможность их продавать. Заказчик с этим согласился, поэтому было принято совместное решение присту¬пить к созданию корзины покупателя.