使用jquery / ajax时页面不会更新

时间:2011-10-07 14:09:25

标签: jquery ruby-on-rails ajax

我正在制作一个网络应用,让人们可以在购物车中添加课程。我有一个有很多LineItems的Cart模型。

在购物车中,我有一个ajaxified按钮,可让人们删除单个订单项。这很好用。这是代码:

_line_item.html.erb:

<div class="delete_line_item"><%= button_to 'Delete', line_item, 
{:method => :delete, :remote => true} %></div>

line_items控制器:

  def destroy
    @user = current_user
    @line_item.destroy
    @cart = @user.cart

    respond_to do |format|
      format.html { redirect_to(root_path) }
      format.js
      format.xml  { head :ok }
    end
  end

然后,destroy.js.erb文件位于我的views / line_items文件夹中:

$("#cart").html("<%= escape_javascript(render(@cart)) %>");

我想做一些类似的事情来清空购物车。为此,我在推车控制器中使用更新操作。以下是相应的代码块:

<div class="empty_cart"><%= button_to 'Empty cart', cart, {:method => :put, :remote => true, 
:confirm => 'Are you sure?'} %></div>

#carts controller
  def update
    if @cart.line_items
      @cart.line_items.each do |item|
        item.destroy
      end 
    end 

    respond_to do |format|
      if @cart.update_attributes(params[:cart])
        format.html { redirect_to(root_path, :notice => 'Cart emptied.') }
        debugger
        format.js
        format.xml  { head :ok }

最后,这是update.js.erb文件我放在我的views / carts文件夹中

$("#cart").html("<%= escape_javascript(render(@cart)) %>");

问题在于,当我尝试清空购物车时,请求会通过(当我刷新页面时,购物车为空),但点击后不会立即显示更改。这让我觉得我的浏览器根本就没有呈现.js.erb文件。我是否需要将update.js.erb文件放在不同的文件夹中或重命名?还是别的什么?

1 个答案:

答案 0 :(得分:0)

除了使用更新操作之外,为什么不直接使用购物车的销毁操作而不是使用更新?这就是我的所作所为,并且有效。