0
我正在制作一个web应用程序,让人们可以将课程添加到购物车。我有一个has_many LineItems的购物车模型。使用jquery/ajax时页面不更新
在购物车中,我有一个允许用户删除单个订单项的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文件,位于我的意见/ 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文件我已经把我的观点中/大车夹:
$("#cart").html("<%= escape_javascript(render(@cart)) %>");
的问题是,当我尝试清空购物车时,请求会通过(当我刷新页面时,购物车是空的),但点击后不会立即出现更改。这让我觉得我的浏览器根本就没有渲染.js.erb文件。我是否需要将update.js.erb文件放在不同的文件夹中或重命名它?还是别的什么?
我的代码被连接起来,使得其他一些东西取决于购物车的存在。所以我希望用户只能清空购物车,而不能销毁它。 (我知道这可能是糟糕的设计)。任何想法,如果我想使用更新?另外,对于你的销毁行为,你是否创建了一个destroy.js.erb文件?你把它放在哪里?谢谢。 – jyli7