0

Searchlogicを使用するのはこれが初めてなので、何かを見落としていると確信しています。

コントローラのようにステートメントを使用するとListing.city_like_or_state_like(params[:search])、Railsは「UndefinedMethod」エラーを返します。同じモデル内の2つのフィールドを検索しようとしています。

しかし、私が使用する場合、Listing.city_like(params[:search])すべてが完全に問題ありません。

ここで何かが足りませんか?OR条件はSearchlogicと一緒に連鎖できると思いました。ORステートメントを実装するにはどうすればよいですか?

4

2 に答える 2

1

Searchlogic は、呼び出しごとに 1 つの「オペレーター」のみをサポートします。だからあなたがしたいことは

Listing.city_or_state_like(params[:search])
于 2011-05-04T03:25:26.087 に答える
0

named_scopes を使用して、パラメータを SearchLogic に直接渡すことができると思います

models/listing.rb

class Listing < ActiveRecord::Base
    named_scope :city_or_state_like, lambda{|*args| {
                 :conditions => ["city ILIKE ? OR state ILIKE ?", args[0], args[1] ]
                  }
                }

end

コントローラー/listing_controller.rb

#params for [:search][:city_or_state_like] = [city_var][state_var]
    Listing.search(params[:search])

私はノーブルの答えに賛成票を投じています:D

于 2011-05-04T14:17:55.283 に答える