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