Agile Web Development with Rails 3nd Edition學習筆記-創建更智能的購物車

上篇筆記我們已經讓我們的網站能夠保存客戶選購的產品了,但是,似乎少了點什麼。恩,少了每樣產品用戶到底要買多少的數據。我們這次就把這個功能加上。
那麼,我們需要一個能夠描述用戶選的產品以及數量的對象。好,我們就來定義一個叫“CartItem”的類完成這個任務吧。這個類將被保存在depot/app/modules目錄中。
CartItem類的代碼如下:
class CartItem
attr_reader :product, :quantity

def initialize(product)
@product = product
@quantity = 1
end

def increment_quantity
@quantity += 1
end

def title
@product.title
end

def price
@product.price * @quantity
end
end

從上面的代碼我們可以看出,由於我們知道了用戶選購了什麼產品,以及用戶選購的數量,所以我們可以很方便的把用戶選購產品的總價計算出來。又爲我們提供了一些方便。
接下來,我們要做的事情就是修改之前編寫的“add_product”方法了。因爲我們現在不應該只是簡單的把產品ID放進我們的購物車了,而是要爲該產品創建一個CartItem的實例,然後再將這個實例放進去了。那麼讓我們來看看新的“add_product”方法是什麼樣子。
def add_product(product)
current_item = @items.find {|item| item.product == product}
if current_item
current_item.increment_quantity
else
@items << CartItem.new(product)
end
end

好了,現在打開服務,在產品列表頁面點擊“Add to Cart”按鈕,這時購物車頁面中的產品後面是不是多了一個“x 1”的字樣?哈哈!
[color=orange]問題
如果不回到產品列表頁面,直接刷新購物車頁面,產品的數量會在每次刷新後加1。怎麼解決呢?[/color]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章