2013-03-22 71 views
0

我得到這種錯誤,它早些時候它正確地得到,但一些它是如何是錯誤。錯誤在軌道上的紅寶石控制器類

 undefined method `save' for 2:Fixnum 

這我在line_item_controller.rb代碼/創建

def create 
    @cart = current_cart 
    product = Product.find(params[:product_id]) 
    @line_item = @cart.add_product(product.id) 

    respond_to do |format| 
    if @line_item.save 
     format.html { redirect_to store_url} 
     format.js { @current_item = @line_item } 
     format.json { render :json => @line_item, :status => :created, :location => @line_item } 
    else 
     format.html { render :action => "new" } 
     format.json { render :json => @line_item.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

請幫助!

+0

add_product(id)'方法返回什麼?稍後您可以調用save,這可能是錯誤消息的來源。 – GSP 2013-03-22 12:31:47

+0

你能否展示add_product的實現呢?好像它正在返回一些常量 – 2013-03-22 12:32:25

+0

這裏是add_product的實現。 高清add_product(產品) current_item = line_items.find_by_product_id(產品) 如果current_item current_item.quantity + = 1 否則 current_item = line_items.build(:PRODUCT_ID => PRODUCT_ID) 結束 結束 – user2164254 2013-03-22 12:33:35

回答

0

它看起來像你的add_product方法是返回一個整數,而不是你期望的產品。

這意味着@line_item.save正在評估爲<some number>.save,這就是爲什麼你會收到錯誤。

檢查add_product並確保它返回的是對象而不是id。

+0

thanx理查德,我其實忘了寫在最後的返回值,你的建議工作。 – user2164254 2013-03-22 12:41:21

0

@cart.add_product似乎會像您期望的那樣返回一個數字(Fixnum)而不是模型對象。如果您不知道如何解決該問題,請告訴我們實施add_product