0

github url

検索結果を表示する簡単な検索を使用しています。

@adds = Add.search(params[:search])

検索結果に加えて、検索結果の近くにあるオブジェクトを表示するメソッドnearbys()を利用しようとしています。次のメソッドは、2に近いオブジェクトを表示しますが、オブジェクト2は表示しません。オブジェクト2を近くのオブジェクトと組み合わせて表示するにはどうすればよいですか?

@adds = Add.find(2).nearbys(10)

上記のコードは機能しますが、検索を使用すると @adds = Add.search(params[:search]).nearbys(10)、メソッドエラーは返されませんundefined method。配列:0x30c3278`の近くにあります。

モデルでオブジェクトを検索し、nearbys()メソッドを使用して、返されたすべての結果を表示するにはどうすればよいですか?

モデル

def self.search(search)
    if search
      find(:all, :conditions => ['address LIKE ?', "%#{search}%"])
      # where('address LIKE ?', "%#{search}")
    else
      find(:all)
    end
  end
4

2 に答える 2

1

find(2)の場合、モデルオブジェクトが返されますが、find(:all)の場合、配列が返されます。

nearsメソッドは、モデルオブジェクトのインスタンスでのみ機能します。検索メソッドが10個のアドレスの配列を返す場合はどうなりますか?配列のnearbyだけを呼び出すことはできません。配列をループして、ループで生成された各アドレスにnearを適用する必要があります。

于 2010-04-08T01:19:04.977 に答える
0

あなたの近くの方法を見なくても、これは:の完璧なユースケースであると言えますscoped

def self.search(term)
  if term
    scoped({ :conditions => ["address LIKE ?", term] })
  else
    scoped({})
  end
end

がクラスで定義されている場合nearby、次のように使用されると思います。

Model.search("pizza").nearby

そして、それはあなたがスコープすることができる方法です。

于 2010-04-08T03:02:28.070 に答える