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%")

または、1 つのメソッド呼び出しにマージできます。

@herbi = Deer.where('state like ? AND city like ?', "%#{params[:number]}%", "%bad%")
于 2013-02-08T15:43:31.900 に答える
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
于 2013-02-08T15:40:08.420 に答える