Rails 3.1 AJAX支持的更改未反映在浏览器中

时间:2013-08-04 18:14:17

标签: ruby-on-rails ajax

运行Rails 3.1 Ruby 1.92

我正在尝试使用AJAX更新我的购物车。我在商店前面有以下按钮来创建订单项

 <%= button_to " Buy ", line_items_path(product_id: product), remote: true, :class =>"blue-btn" %>

以及我的line_items控制器中的以下创建操作

def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id)
respond_to do |format|
 if @line_item.save
 format.html { redirect_to store_url,notice: 'your item was added.' } 
 format.js { @current_item = @line_item }
 format.json { render json: @line_item,
 status: :created, location: @line_item }

最后,我在app / views / line_items目录中的create.js.erb模板中有以下RJS代码:

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

然而,当我向购物车添加商品时,我必须刷新页面才能看到更新的数量和总数。每次尝试将项目添加到购物车后我检查了服务器日志,并显示它渲染了line_items / create.js.erb我已经包含了完整的日志下面的任何帮助将非常感激

在2013-08-04 14:01:26 -0400开始发布“/ line_items?product_id = 1”for 127.0.0.1 由LineItemsController处理#create为JS   参数:{“authenticity_token”=&gt;“2TxUMUloihqhzGHlZrC9YKNPGNhfwZ070lEW64uL0SY =”,“product_id”=&gt;“1”}   ←[1m←[35mCart Load(1.0ms)←[0m SELECT“carts”。* FROM“carts”WHERE“carts”。“id”=?限制1 [[“id”,64]]   ←[1m←[36mProduct Load(0.0ms)←[0m←[1mSELECT“products”。* FROM“products”WHERE“products”。“id”=?限制1←[0m [[“id” ,“1”]]   ←[1m←[35mLineItem Load(0.0ms)←[0m SELECT“line_items”。* FROM“line_items”WHERE“line_items”。“cart_id”= 64 AND“line_ items“。”product_id“= 1 LIMIT 1   ←[1m←[36m(0.0ms)←[0m←[1mbegin transaction←[0m   ←[1m←[35mSQL(1.0ms)←[0m INSERT INTO“line_items”(“cart_id”,“created_at”,“order_id”,“product_id”,“数量”,“upda” ted_at“)VALUES(?,?,?,?,?,?)[[”cart_id“,64],[”created_at“,Sun,2013年8月4日18:01:26 UTC +00:00],[” order_id“,n il],[“product_id”,1],[“quantity”,1],[“updated_at”,Sun,2013年8月4日18:01:26 UTC +00:00]]   ←[1m←[36m(103.3ms)←[0m←[1mcommit交易←[0m   ←[1m←[35mLineItem Load(1.0ms)←[0m SELECT“line_items”。* FROM“line_items”WHERE“line_items”。“cart_id”= 64   ←[1m←[36mProduct Load(0.0ms)←[0m←[1mSELECT“products”。* FROM“products”WHERE“products”。“id”= 2 LIMIT 1←[0m   ←[1m←[35mProduct Load(0.0ms)←[0m SELECT“产品”。* FROM“products”WHERE“products”。“id”= 1 LIMIT 1   渲染过的购物车/ _cart.html.erb(21.0ms)   渲染的line_items / create.js.erb(22.0ms) 在136ms完成200 OK(浏览次数:26.0ms | ActiveRecord:106.3ms)

2 个答案:

答案 0 :(得分:0)

我没有看到您的代码有任何问题,但这是我的想法:

  • 我不确定@cart.add_product(...)方法的内部,代码看起来像是返回更新的完整购物车对象(添加了产品),对吗?
  • 在浏览器中(使用Firebug或其他),您是否看到服务器向您发送了应该插入的HTML代码段?

答案 1 :(得分:0)

返回并审查了ajax步骤结果我调用了错误的html元素。解决了这个问题,现在工作正常。