0

我是新來的ROR。我正在建設電子商務網站。在購物車中,如果我嘗試添加產品,則在添加產品之前不添加產品。現在我想要如果用戶添加相同的產品,那麼它的數量應該增加。更新購物車的數量如果相同產品加入

這裏是carts_controller.rb中的add_to_cart方法在此先感謝。

def add_to_cart 
    @cart = Cart.find_by_Product_id_and_User_id(params[:product_id], current_user.id) 
    if @cart.nil? 
    @cart = Cart.create(:User_id => current_user.id, :Product_id => params[:product_id], :Quantity => '1') 
    else 
    @cart.update(:Quantity +=> '1') 
    end 
    redirect_to view_cart_path 
end 
+0

資金使用的話只對類名,模塊,而不是屬性名稱不變等 ,散列鍵等。 重寫你的代碼並說出你的問題是什麼?什麼是不工作 – gotva

+0

@gotva:它通過嘗試... 其他 [at] cart = Cart.find_by_Product_id(params [:product_id]) [at] cart.Quantity + = 1 [at] cart。保存 結束 –

+0

@gotva:感謝您的指導,現在我將在屬性命名時處理它.. –

回答

1

您的模式似乎很奇怪:爲什麼購物車有產品ID?這表明購物車「屬於」一種產品,這是錯誤的。我曾預計每個用戶都有一個購物車,並且購物車有一個通過連接表的產品列表。事情是這樣的:

class User 
    has_one :cart 
end 

#user_id 
class Cart 
    belongs_to :user 
    has_many :cart_products 
    has_many :products, :through => :cart_products 
end 

#cart_id, product_id, :quantity 
class CartProduct 
    belongs_to :cart 
    belongs_to :product 
end 

#various fields to do with the specific product 
class Product 
    has_many :cart_products 
    has_many :carts, :through => :cart_products 
end 

如果是這樣的模式,那麼我會處理數量更新,像這樣:

#in Cart class 
def add_product(product) 
    if cart_product = self.cart_products.find_by_product_id(product.id) 
    cart_product.quantity += 1 
    cart_product.save 
    cart_product 
    else 
    self.cart_products.create(:product_id => product.id, :quantity => 1) 
    end 
end 
+0

謝謝... @Max Williams –

相關問題