В интернет-магазине корзина находится на странице /cart_items.
Для изменения состава корзины предусмотрено три операции:
Все операции, меняющие состав корзины, осуществляются путем отправления POST запроса на URL /cart_items. Можно ограничиться обычными html формами, можно манипулировать корзиной при помощи ajax запросов, для этого надо использовать URL /cart_items.json. Содержание запросов не зависит от того, каким из двух способов вы работаете с корзиной.
Если вы используете html форму, то после выполнения операции покупатель будет перенаправляться на страницу корзины.
Параметры запроса:
Если вы используете ajax запрос, то вам вернут объект в JSON формате с атрибутами:
/* Пример на jQuery */
$.post('/cart_items.json', {
variant_id: 104490412,
quantity: 1,
comment: "test comment"
})
.done(function (cart) {
console.log(cart);
})
Параметры запроса:
Если вы используете ajax запрос, то вам вернут объект в JSON формате с атрибутами:
/* Пример на jQuery */
$.post('/cart_items.json', {
variant_ids: {
98156648: 1,
98156640: 2
}
})
.done(function (cart) {
console.log(cart);
})
URL запроса: /cart_items/id
где id - идентификатор модификации
Параметры запроса:
Если вы используете ajax запрос, то вам вернут объект в JSON формате с атрибутами:
/* Пример на jQuery */
$.post('/cart_items/98156178.json', {
_method: "delete"
})
.done(function (cart) {
console.log(cart);
})
Позволяет одновременно добавлять и удалять позиции, так же позволяет менять количество заказываемых товаров.
Параметры запроса:
Если в количестве указан 0, то модификация удаляется из корзины.
Если вы используете ajax запрос, то вам вернут объект в JSON формате с атрибутами:
<form action="/cart_items" id="cartform" method="post">
<input type="hidden" value="put" name="_method">
<table>
{% for item in cart.items %}
<tr>
<td><a href="{{ item.product.url }}">{{ item.title | escape }}</a></td>
<td><input type="text" value="{{ item.quantity }}" name="cart[quantity][{{ item.id }}]"/><td>
<td><input type="text" value="{{ item.comment }}" name="cart[order_line_comments][{{ item.id }}]"/><td>
</tr>
{% endfor %}
</table>
</form>
/* Пример на jQuery */
$.post('/cart_items.json', {
_method: 'PUT',
cart: {
quantity: {
109715042: 1
}
}
})
.done(function (cart) {
console.log(cart);
})
// или
$.post('/cart_items.json', $('#cartform').serialize())
.done(function (cart) {
console.log(cart);
})
// Сериализованные данные _method=PUT&cart%5Bquantity%5D%5B104490412%5D=1