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的所有库存。