关于Rails的AJAX对我不起作用

时间:2013-02-20 21:45:14

标签: jquery ruby-on-rails ajax

所以我有@line_items,属于@cart。我想让我的购物车空着而没有刷新页面。我在购物车模板中设置了button_to

<%= button_to 'Empty cart' , cart, :remote => true, :method => :delete,
:confirm => 'Are you sure?' %>

carts_controller中的destroy方法

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)) %>");

仅在刷新后才能使用。我想,当按下按钮时,推车被清空,所以当rails渲染@cart时,它应显示为空。也许我弄错了什么?

2 个答案:

答案 0 :(得分:0)

在调用destroy动作后,@ cart对象可能为nil(如果你通过session [:cart_id]获取current_cart),那么你的JS部分无法正确呈现它。无论如何,你应该检查你的development.log,看看那里发生了什么。

答案 1 :(得分:0)

好的,我找到了两种解决问题的方法

1)我认为哪个更好,添加:dependent =&gt; :破坏

has_many: line_items, :dependent => :destroy

to cart.rb model

2)在破坏方法中调用Cart.new的方法