运行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)
答案 0 :(得分:0)
我没有看到您的代码有任何问题,但这是我的想法:
@cart.add_product(...)
方法的内部,代码看起来像是返回更新的完整购物车对象(添加了产品),对吗?答案 1 :(得分:0)
返回并审查了ajax步骤结果我调用了错误的html元素。解决了这个问题,现在工作正常。