1

我正在处理的应用程序中的一些代码有问题。
使用以下代码:

@herbivores=Deer.find(:all,:conditions =>['state like?', '%' + params[:number]+'%'])
@herbi=@herbivores.find(:all,:conditions =>['city like?', '%bad%'])

我收到错误:

wrong number of arguments (2 for 0..1)

谁能解释发生了什么?

4

2 回答 2

3

使用查询 API 来保持正确的范围,并且因为是可链接的,所以也更干净where

@herbivores=Deer.where('state like ?', '%' + params[:number]+'%')
@herbi=@herbivores.where('city like ?', '%bad%')

您也可以在没有中间变量的情况下直接链接它们:

@herbi = Deer.where('state like ?', "%#{params[:number]}%").where('city like ?', "%bad%")

或者您可以将其合并到一个方法调用中:

@herbi = Deer.where('state like ? AND city like ?', "%#{params[:number]}%", "%bad%")
于 2013-02-08T15:43:31.900 回答
0

我相信正在发生的事情是您将@herbivores其视为可以找到的模型,但它是鹿记录数组,因此不是模型。

编辑: Purhaps 你想要:

@herbivores=Deer.find(:all,:conditions =>['state like ?', "%#{params[:number]}%"])
@herbivores.each do |herbi|
  if herbi.city == 'bad'
    puts "bad city in state #{ani.state}"
  end
end
于 2013-02-08T15:40:08.420 回答