Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails &引用;尝试调用私有方法“;与基地教程_Ruby On Rails - Fatal编程技术网

Ruby on rails &引用;尝试调用私有方法“;与基地教程

Ruby on rails &引用;尝试调用私有方法“;与基地教程,ruby-on-rails,Ruby On Rails,使用depot教程“尝试调用私有方法” 在我的“cart.rb”模型中 def add_product(product_id) current_item = line_items.where(:product_id => product_id).first if current_item current_item.quantity += 1 else current_item = LineItem.new(:product_id=>product_id

使用depot教程“尝试调用私有方法”

在我的“cart.rb”模型中

def add_product(product_id) 
  current_item = line_items.where(:product_id => product_id).first 
  if current_item
    current_item.quantity += 1
  else
    current_item = LineItem.new(:product_id=>product_id)
    line_items << current_item
  end
  current_item
end
当我选择一个项目将其添加到购物车时,我得到一个“尝试调用私有方法”错误

应用程序跟踪是

/Users/machinename/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/attribute_methods.rb:236:in `method_missing'
/Users/machinename/Documents/rails_projects/depot/app/controllers/line_items_controller.rb:46:in `create'

我看到一些关于类似错误的讨论,听起来答案是升级到ruby 1.9(我使用的是1.8.7)。这就是答案还是有其他可能的原因?

如果可能的话,给出cart.rb的所有代码。也许你的add\u product方法是在一些私有方法下,比如。我知道这应该是评论,我想解释它的例子,所以我粘贴在答案

 private
   def self.some_method
     #some code 
   end

   def add_product(product_id) 
注释中的代码如下所示

class Cart < ActiveRecord::Base 
  has_many :line_items, :dependent => :destroy 
end #this end is creating problem

  def add_product(product_id)
    current_item = line_items.where(:product_id => product_id).first 
    if current_item 
      current_item.quantity += 1 
    else 
      current_item = LineItem.new(:product_id=>product_id)
      line_items << current_item 
    end 
    current_item 
  end 

class购物车:销毁
结束#这一结束正在制造问题
def添加产品(产品id)
当前项目=行项目。其中(:product\u id=>product\u id)。第一个
如果是当前项目
当前项目数量+=1
其他的
当前项目=行项目。新建(:产品id=>产品id)
行项目:销毁
def添加产品(产品id)
当前项目=行项目。其中(:product\u id=>product\u id)。第一个
如果是当前项目
当前项目数量+=1
其他的
当前项目=行项目。新建(:产品id=>产品id)

行\u items如果可能,给出cart.rb的所有代码。可能您的add\u product方法是在一些私有方法下,例如。我知道这应该是评论,我想解释它的例子,所以我粘贴在答案

 private
   def self.some_method
     #some code 
   end

   def add_product(product_id) 
注释中的代码如下所示

class Cart < ActiveRecord::Base 
  has_many :line_items, :dependent => :destroy 
end #this end is creating problem

  def add_product(product_id)
    current_item = line_items.where(:product_id => product_id).first 
    if current_item 
      current_item.quantity += 1 
    else 
      current_item = LineItem.new(:product_id=>product_id)
      line_items << current_item 
    end 
    current_item 
  end 

class购物车:销毁
结束#这一结束正在制造问题
def添加产品(产品id)
当前项目=行项目。其中(:product\u id=>product\u id)。第一个
如果是当前项目
当前项目数量+=1
其他的
当前项目=行项目。新建(:产品id=>产品id)
行项目:销毁
def添加产品(产品id)
当前项目=行项目。其中(:product\u id=>product\u id)。第一个
如果是当前项目
当前项目数量+=1
其他的
当前项目=行项目。新建(:产品id=>产品id)

line\u items类Cart:destroy end def add\u product(product\u id)current\u items=line\u items。其中(:product\u id=>product\u id)。首先如果当前的\u item当前的\u item.quantity+=1,否则当前的\u item=line item.new(:product\u id=>product\u id)行\关闭类后添加方法的项目。将类结束放在方法结束之后,我打赌它会起作用。类购物车:销毁结束定义添加产品(产品id)当前项目=行项目。其中(:产品id=>产品id)。如果当前项目当前项目数量+=1,则当前项目=行项目。新建(:product\u id=>product\u id)行\关闭类后添加方法的项目。将类结束放在方法结束后,我打赌它会起作用。