Ruby on rails RubyonRails,自从ActiveRecord发生更改以来,我如何使用Post传递数据?

Ruby on rails RubyonRails,自从ActiveRecord发生更改以来,我如何使用Post传递数据?,ruby-on-rails,activerecord,railscasts,Ruby On Rails,Activerecord,Railscasts,使用基于旧Railscast的代码,我一直试图在站点的不同部分之间传递有关购物车的信息,问题似乎与以下代码有关 def create @pProduct = Product.find(params[:product]) @item = Item.create!(:cart => current_cart, :product => @pProduct, :quantity => 1, :pPrice => @pProduct.pPrice) flash[:notice] =

使用基于旧Railscast的代码,我一直试图在站点的不同部分之间传递有关购物车的信息,问题似乎与以下代码有关

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我为这张照片的所有内容道歉

编辑:原来我是个白痴,架构问题很糟糕

@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)
假设在模型类中为项定义了正确的关联


更具体地说,这假设您的商品属于购物车。

在该更改中,调用nil并尝试使用@current\u cart=current\u cart会导致完全相同的错误,原因很明显。如果购物车不存在或当前购物车id已付款,则我希望创建购物车。假设是正确的,模型肯定是正确的。抱歉,如果不清楚,我现在明显睡眠不足。您能发布您的模型和/或您的商品和购物车表模式吗?该错误表明您的item表中没有cart_id列。这似乎是架构问题,凌晨3点编码导致我丢失了该死的表本身的链接。谢谢你,我从来没有想过要对这个进行三次检查。你介意发布
routes.rb
文件吗?看起来你可能遗漏了什么?为了方便而粘贴。当前购物车方法实际上在我的应用程序控制器中,这是我设法忽略的一个事实。我在其中没有看到任何东西将当前购物车url定义为路由帮助器--您是否可以运行
rake routes
以确保定义了
current购物车url
,这个错误是由于之前的触摸造成的,我的测试让我意识到了这一点。谢谢你,谢谢你的帮助。