Rails - 错误的参数数量(2为0..1)错误

时间:2013-02-08 15:39:17

标签: ruby-on-rails ruby oop

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

@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)

有人可以解释发生了什么吗?

2 个答案:

答案 0 :(得分: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%")

答案 1 :(得分:0)

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

编辑: 你想要的可能是:

@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