Rails 3 ajax更新部分无法在没有页面刷新的情况下工作

时间:2011-07-03 01:39:05

标签: ajax ruby-on-rails-3 renderpartial

我正在开发Rails 3购物车。我有一个目录页面显示所有产品,一个部分显示购物车的要点。因此,用户添加到购物车的任何产品都会显示在此购物车中。现在,这不起作用。我将产品添加到购物车后点击刷新,否则部分不会更新。

这是我的代码:

Cart_Controller添加方法

def add
@cart = user_cart
 @deal = Deal.find(params[:id])
  @item = @cart.add(params[:id])
   flash[:notice] = "Added #{@deal.deal_name} to cart"
    @cart = user_cart
    respond_to do |format|
     format.html{ redirect_to root_path}
     format.js
    end

add.js.erb

$("#shopping_cart").replace_html("<%=escape_javascript(render(:partial => 'cart', :locals => {:cart => @cart}))%>");

产品页面

<div id="shopping_cart">
  <%=render :partial => 'cart/cart',
   :locals => {:cart => user_cart}%>
    <%end%>
</div>

<%=link_to "Add to Cart",{:action => 'add', :id => deal.id}, :remote => true%>

这就是我在日志中看到的内容:

在2011-07-02 18:04:38 -0700开始获取127.0.0.1的“/ cart / add / 2”   CartController处理#添加为JS
  参数:{“id”=&gt;“2”}
呈现购物车/ _cart.html.erb(9.6ms)
渲染cart / add.js.erb(11.7ms)
在274ms完成200 OK(浏览次数:23.4ms | ActiveRecord:0.0ms)

请帮助我。

1 个答案:

答案 0 :(得分:4)

尝试

$("#shopping_cart").html("<%= escape_javascript(render(:partial => 'cart', :locals => {:cart => @cart})).html_safe %>");