2012-03-16 14 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' 

私はこれはおそらく途方もなく単純なものですけど、私はこれで過去半時間の壁に頭を非難されてきたように任意の入力は歓迎されるであろう。

EDIT:リクエスト通り、routes.rb私はこの場所のどこにいるのか謝罪します。

http://pastebin.com/gq4Ekzvn EDIT:私はばかだと思います。

+0

'routes.rb'ファイルを投稿しても構いませんか?あなたがそこに何かを見つけられないかもしれないようですね? – mportiz08

+0

http://pastebin.com/gq4Ekzvn簡単に貼り付けられました。 current_cartメソッドは実際に私のアプリケーション・コントローラにありますが、私は無視することができました。 – timewaster

+0

そこにルートヘルパーとしてcurrent_cart_urlを定義するものはありません。 'rake routes'を実行して' current_cart_url'が定義されていることを確認できますか? – mportiz08

答えて

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) 

をお読みください。

具体的には、これはあなたのItemがカートに属していることを前提としています。

+0

その変更では、nilが呼び出され、@ current_cart = current_cartを使用しようとすると、明らかに同じエラーが発生します。私が望むのは、カートが存在しない場合、または現在のカートIDが支払われた場合に作成されるカートです。仮定は正しいです、モデルは間違いなく正しく相互作用しています。このことが明らかでなければ、私は明確な睡眠不足で走っています。 – timewaster

+0

あなたのモデルやあなたのアイテムとカートの表スキーマを投稿できますか?このエラーは、商品表にcart_id列がないことを示しています。 – bblack

+1

これはスキーマの問題に見えますが、3AMのコーディングが私の気持ちの表の中のリンクを見逃してしまいます。ありがとう、私は決してそれをチェックトリプルと思っただろう。 – timewaster

関連する問題