2012-03-16 38 views
0

使用基於舊版Railscast的代碼,http://railscasts.com/episodes/142-paypal-notifications,我一直在嘗試將網站的不同信息傳遞給站點中的不同部分,但問題似乎與以下代碼一致。Ruby on Rails,自ActiveRecord更改以來,如何使用Post來傳遞數據?

def create 
@pProduct = Product.find(params[:product]) 
@item = Item.create!(:cart => current_cart, :product => @pProduct, :quantity => 1, :pPrice => @pProduct.pPrice) 
flash[:notice] = "Successfully added #{@pProduct.pName}" 
redirect_to current_cart_url 
end 

並處理該輸入的代碼,在應用程序控制器中找到。

def current_cart 
if session[:cart_id] 
    @current_cart ||= Cart.find(session[:cart_id]) 
    session[:cart_id] = nil if @current_cart.purchased_at 
end 
if session[:cart_id].nil? 
    @current_cart = Cart.create! 
    session[:cart_id] = @current_cart.id 
end 
@current_cart 
end 

產生的錯誤是。

ActiveModel::MissingAttributeError in ItemsController#create 
can't write unknown attribute `cart_id' 
Rails.root: /home/timewaster/Aptana Studio 3 Workspace/cs2512 
Application Trace | Framework Trace | Full Trace 

app/controllers/items_controller.rb:4:in `create' 

我知道這可能是一些可笑的簡單,但是任何輸入將受到歡迎,因爲我已經被關上我的頭變成了這個在過去的半小時一堵牆。

編輯:根據要求,routes.rb我很抱歉如何遍佈這個地方。

http://pastebin.com/gq4Ekzvn 編輯︰原來我是一個白癡,架構問題吸吮。

+0

你介意發佈'routes.rb'文件嗎?好像你可能會錯過那裏的東西? – mportiz08 2012-03-16 02:18:35

+0

http://pastebin.com/gq4Ekzvn Pasteinned爲了方便。 current_cart方法實際上在我的應用程序控制器中,我設法忽略了一個事實。 – timewaster 2012-03-16 02:27:50

+0

我沒有在那裏看到任何將current_cart_url定義爲路由助手的東西 - 你可以運行'rake routes'來確保'current_cart_url'被定義了嗎? – mportiz08 2012-03-16 02:32:26

回答

0
@item = Item.create!(:cart => current_cart, :product => @pProduct, :quantity => 1, :pPrice => @pProduct.pPrice) 

應該讀

@item = Item.create!(:cart_id => @current_cart.id, :product_id => @pProduct.id, :quantity => 1, :pPrice => @pProduct.pPrice) 

假設你已經在項目模型類中定義的正確的關聯。

更具體地說 - 這假設你的物品屬於_to cart。

+0

由於顯而易見的原因,調用nil被調用並嘗試使用@current_cart = current_cart會導致完全相同的錯誤。我想要的是要創建的購物車如果不存在或者當前的購物車編號已付款。假設是正確的,模型肯定是正確交互。如果這不明確,我抱歉,我正在運行明顯的睡眠不足。 – timewaster 2012-03-16 02:02:07

+0

您可以發佈您的模型和/或您的物品和購物車表格模式嗎?錯誤提示項目表中沒有cart_id列。 – bblack 2012-03-16 02:25:29

+1

它看起來是一個模式問題,3AM編碼導致我錯過了該死的表本身內部的鏈接。謝謝你,我從來沒有想過有三重檢查。 – timewaster 2012-03-16 02:37:50

相關問題