我正在处理的应用程序中的一些代码有问题。
使用以下代码:
@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)
谁能解释发生了什么?
我正在处理的应用程序中的一些代码有问题。
使用以下代码:
@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)
谁能解释发生了什么?
使用查询 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%")
我相信正在发生的事情是您将@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