2016-11-08 43 views
-1

如果用戶點擊「添加到購物車」按鈕,我需要在導航欄div中增加一個數字,以顯示購物車中有多少產品。Rails 5,Ajax,jQuery - 點擊按鈕時增加數字

所以,我的按鈕有remote: true設置

和導航欄有ID 計數一個div。

功能我用它來增加數:

$('#count').html(function(i, val) { return val*1+1 }); 

但是,如果我重新載入頁面,價值消失。我如何才能讓這個價值留在那裏,直到一些行動,如「結帳」?

或者也許有更好的方法呢?

+1

那麼創建該組項目ur_controllerur_action.js.erb,你需要在一些地方保存價值,如在DB或在cookie中。 – Vucko

回答

0

創建一個更新的車 計數模型方法或幫助方法,用於查找活動購物車物品的計數。所以它也提供了準確的值。

例如:

class User < ApplicationRecord 
has_many :cart_items 
def active_cart_items 
    return self.cart_items.group_by(&:product_id).count #.where(status:active) (optional) 
end 
end 

在車櫃檯

$('#count').html("<%[email protected]_cart_items%>") 
+0

我添加你的評論作爲答案,因爲你顯示瞭如何將Ruby部分輸入到JS中的語法。我didint知道(是的,現在看起來很簡單...)。但我仍然需要處理這個問題,因爲我正在使用此方法添加新的cart_item:'def add_product(product) current_item = cart_items.find_by(product_id:product.id)if current_item current_item.quantity + = 1 否則 current_item = cart_items.build(產品編號:product.id)結束 current_item end' –

+0

因此,如果用戶將多個相同cart_items他們沒有被乘以 –

+1

啊,新鮮的空氣和軌道控制檯讓我很快樂。答案很簡單:@ cart.cart_items.map {| i |我[:數量]} .sum –

0

您需要將購物車項目存儲到數據庫。在按鈕的點擊, 一個ajax(remote: true)將被解僱,這將在數據庫中&將返回相應的js.erb文件 將在導航欄更新計數