Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 在object.find(:all,:conditions)中返回数组时未定义的方法_Ruby On Rails_Activerecord_Ruby On Rails 2 - Fatal编程技术网

Ruby on rails 在object.find(:all,:conditions)中返回数组时未定义的方法

Ruby on rails 在object.find(:all,:conditions)中返回数组时未定义的方法,ruby-on-rails,activerecord,ruby-on-rails-2,Ruby On Rails,Activerecord,Ruby On Rails 2,我正在使用: rails 2.3.9 ruby 1.9.3 Windows7终极版 rubygems 1.8.24 这项工作: @inventories = Inventory.find :first, :conditions => {:siteId => params[:siteId]} 这并不重要 @inventories = Inventory.find :all, :conditions => {:siteId => params[:siteId]} 错误消息

我正在使用:

rails 2.3.9
ruby 1.9.3
Windows7终极版
rubygems 1.8.24

这项工作:

@inventories = Inventory.find :first, :conditions => {:siteId => params[:siteId]}
这并不重要

@inventories = Inventory.find :all, :conditions => {:siteId => params[:siteId]}
错误消息:

NoMethodError (undefined method `siteId' for #Array:0x49738f8)

对于Rails2.x,您的语法稍有错误 如果要查找具有特定条件的所有记录,请尝试使用多个条件的示例

@inventories = Inventory.find(:all, :conditions => ["siteId=? and priority=?", params[:siteId], 3])
当你写作时

@inventories = Inventory.find :first, :conditions => {:siteId => params[:siteId]}
@inventories = Inventory.find :all, :conditions => {:siteId => params[:siteId]}
根据与给定条件匹配的默认顺序,上行为您提供了一个
库存的单个(第一个)对象,因此您可以使用
@Inventory.siteId
。但是,当没有行与给定条件匹配时,它将返回nil,在这种情况下,如果您尝试使用
@inventory.siteId
,它将为nil抛出一个错误
未定义的方法
siteId'`

但是当你写作的时候

@inventories = Inventory.find :first, :conditions => {:siteId => params[:siteId]}
@inventories = Inventory.find :all, :conditions => {:siteId => params[:siteId]}
如果查询返回1个或多个对象(即行)和空白数组(即
[]
),则无论该行是否满足条件,上行将为您提供
库存
的对象数组。因此,当您尝试使用
@Inventory.siteId
时,实际上是在数组上而不是在
Inventory
的对象上应用siteId,它将为#Array`抛出一个错误
未定义的方法
siteId'。但是,以下操作将正常工作

@inventories.each{|p| puts "#{p.siteId}"}

我希望siteId是唯一的条件。当我尝试:@Inventory=Inventory.find(:all,:conditions=>[“siteId=?”,params[:siteId]])时,错误仍然存在。@AldrinDelaCruz我确信它确实有效。可能错误不在查找上,而是在查找后的一行上。发布development.log文件中错误的完整堆栈跟踪是的,james,我很抱歉。这可能是一个noob问题,但我正在尝试查询siteId=17的所有库存。