2012-11-03 76 views
2

我試圖在我的購物車控制器中創建一個基本設置,這將允許我逐步增加添加到購物車的產品的數量值(如果項目記錄已經存在)。增加購物車數量RoR

我目前有:

class ItemsController < ApplicationController 

def create 
    @product = Product.find(params[:product_id]) 

    if @item.new_record? 
     @item = Item.create!(:cart => current_cart, :product => @product, :quantity => 1, :unit_price => @product.price) 
    else 
     @item.increment! :quantity 
    end 
    redirect_to cart_path(current_cart.id) 
end 

end 

不過,我不斷收到錯誤undefined method new_record「?爲零:NilClass`

任何幫助人可以提供解決這個問題,真的很感激!

回答

2

你沒有任何地方聲明@item。在此之前這就是爲什麼錯誤來了

試試這個代碼

def create 
    @product = Product.find(params[:product_id]) 

if !current_cart.items.exists?(:product_id => @product.id) 
    @item = Item.create!(:cart => current_cart, :product => @product, :quantity => 1, :unit_price => @product.price) 
else 
    current_cart.items.find(:first, :conditions =>{:product_id => @product.id}).increment! :quantity 
end 
redirect_to cart_path(current_cart.id) 
end 

這應該解決您的問題的回答,是完全有道理

+0

感謝。如何將@item定義爲特定購物車內的商品?謝謝 –

+0

我猜我已supplimented代碼也在編輯嘗試它和telll是否運行 –

+0

做到了嗎? –