Si tengo este metodo el el controlador cart_controller;
class CartController < ApplicationController
....
def clear
if request.xhr?
@cart.cart_items.destroy_all
flash[:cart_notice] = "Carro Vaciado."
render :controller => 'cart', :action => 'clear_with_ajax'
elsif request.post?
@page_title = 'Vaciar Carro'
@cart.cart_items.destroy_all
flash[:cart_notice] = "Carro Vaciado."
redirect_to :controller => 'catalog'
else
@page_title = 'Vaciar Carro'
render :controller => 'cart', :action => 'clear', :template => 'cart/clear'
end
end
end
y en la carpeta views/cart ,tengo el fichero clear_with_ajax.js.erb y el parcial _cart.tml.erb ,con este codigo
<h3>Su carro de la compra</h3>
<p>
<strong>
<% unless controller.controller_name == 'checkout' %>
<%= link_to 'Proceder a realizar la compra', :controller => 'checkout' %>
<% end %>
</strong>
</p>
<ul>
<% for item in @cart.cart_items %>
<li id="cart_item_<%= item.box.id %>">
<%= render :partial => 'cart/item', :object => item %>
</li>
<% end %>
</ul>
<p id='cart_total'><strong>Total: <%= sprintf "%0.2f €", @cart.total %></strong></p>
<% unless @cart.cart_items.empty? %>
<p id='clear_cart_link'>
<b><%= link_to 'Vaciar carro', :controller => 'cart', :action => 'clear' , :remote => true %></b>
</p>
<% end %>
Cuando le doy al enlace de Vaciar carro,no hace nada,si quito el remote=>true y se hace una peticion post si que va pero con ajax no hay manera.