Навигация
Смена направления
Теперь, когда корзина отображается на боковой панели, мы можем изменить ха¬рактер работы кнопки Добавить в корзину. Вместо отображения отдельной стра¬ницы корзины ей нужно будет всего лишь обновить главную страницу каталога. Изменить ее функции несложно: в конце действия add_to_cart браузер перена¬правляется обратно на каталог.
Листинг файла app/controllers/store_controller.rb
жf add_to_cart begi n
product = Product.find(params[:id]) rescue ActiveRecord::RecordNotFound
logger.error("Попытка доступа к несуществующему товару
#{params[:id]}" ) redi rect_to_index("HeBepHbifi идентификатор товара" )
else
@cart = find_cart
@cart.add_product(product)
redi rect_to_i ndex
end
Чтобы этот код заработал, нам необходимо изменить определение метода redi rect_to_i ndex и сделать параметр сообщения необязательным.
„Иистинг файла app/controllers/store_controller.rb
aef redirect_to_index(msg = nil) flash[:notice] = msg if msg redirect_to .action => .index
Шаблон add_to_cart.rhtml больше не нужен и от него можно избавиться. (К то¬му же его присутствие в дальнейшем может вызвать путаницу.) Итак, теперь у нас есть магазин с корзиной на боковой панели. Когда вы щелкнете на кнопке добав¬ления товара к содержимому корзины, страница перезагрузится с отображением обновленной корзины. Тем не менее, если каталог слишком объемный, эта переза¬грузка займет некоторое время. При этом будут задействованы ресурсы интер¬нет-канала и сервера. Технология AJAX позволит улучшить создавшуюся ситуацию.