2011-04-11 5 views
1

RoR 2.3.8 사용.조건부 "또는"생각하는 스핑크스 검색

여기 내 컨트롤러 코드입니다 :

class CitiesController < ApplicationController 
    def show 
    @city = City.find(params[:id]) 
    @shops = Shop.search @city.name, { 
     :conditions => {:country => @city.country && (:city => @city.name || :state => @city.state)}, 
     :page => params[:page], 
     :per_page => 100 
     } 
    end 
end 

:conditions => {:country => @city.country && (:city => @city.name || :state => @city.state)} 난 그냥 달성 싶어하는지 설명하기 위해 노력하고 있기 때문에 분명히 작동하지 않습니다.

:city:stateSpots 테이블의 열이 아니며 Cities 테이블입니다. 나는 결과 중 하나가 그 조건을 충족 시키길 원한다. 그러나 그것을하는 방법을 전혀 모른다.

감사합니다.

답변

8
타스가 바로 그것을 가지고

- 당신의 TS 검색 호출, 그것의 모양은을 :하지만 수동으로 쿼리를 생성 할 때, 당신은 스스로를 설정해야합니다 - - 당신이 :conditions 인수를 사용하는 경우 스핑크스가 자동으로 수행 할 생각

def show 
    @city = City.find(params[:id]) 
    @shops = Shop.search "#{@city.name} @country #{@city.country} (@city #{@city.name} | @state #{@city.state})", 
    :match_mode => :extended, 
    :page  => params[:page], 
    :per_page => 100 
    } 
end 

당신은 내가 경기 모드를 설정 한주의 것입니다.

+0

감사합니다. Pat. 나는 총 엔트리 수를 보여 주려고 할 때이 '정의되지 않은 메소드'total_entries for'nil : NilClass'을 내 관점에서 얻었다. – Victor

+0

죄송합니다, 형편 없음. 그것은 아주 잘 작동합니다. 감사! – Victor

4

원시 검색을 스핑크스에 배치하십시오. TS 문서에서 올바른 방법을 찾아야합니다. A reference for raw search. 당신은 아마 (. 내가 TS 이름 인덱스가를 확인하는 방법을 모르겠어요.)

"@city_country #{@city.country} (@city_name #{@city.name} | @city_state #{@city.state})" 

같은 것을 원하는

+0

이것을 통합하기 위해 전체 코드를 사용해 볼 수 있습니까? – Victor