Итак, у меня есть @line_items, принадлежащие @cart. Я хочу, чтобы моя корзина была пустой, не обновляя страницу. Я поставил button_to в корзину шаблонAJAX on Rails не работает для меня
<%= button_to 'Empty cart' , cart, :remote => true, :method => :delete,
:confirm => 'Are you sure?' %>
уничтожить метод в carts_controller
def destroy
@cart = current_cart
@cart.line_items.destroy
session[:cart_id] = nil
respond_to do |format|
format.html { redirect_to(store_url, :notice => 'Your cart is currently empty') }
format.js
format.xml { head :ok }
end
end
и destroy.js.erb
$('#cart').html("<%= escape_javascript(render(@cart)) %>");
Работает только после освежения. Полагаю, когда кнопка нажата, тележка опустеет, поэтому, когда рельсы визуализуют @cart, она должна быть пустой. Может, у меня что-то не так?
Вы проверили свой AJAX op с помощью панели инструментов разработчика в своем браузере? Убедитесь, что его параметры в порядке, это POST-операция, она возвращает HTTP-код 200, и любые результаты (например, в XML) верны. – halfer
Вы должны добавить 'format.js' над строкой' format.html ... '. – mccannf
На самом деле у меня есть формат.js в моем коде, извините, я только что опубликовал версию, когда я попытался это сделать с помощью контроллера line_items. –