2012-01-28 2 views
0

사용자가 기사 콘텐츠를 검색하고 카테고리가있는 선택 상자를 사용하여 검색 범위를 좁힐 수있는 검색 양식이 있습니다. 범주 매개 변수가 비어 있으면 빈 ID를 검색하지만이 경우 모든 범주를 반환하고 싶습니다. 이를 구현하기 위해 Thinking Sphinx를 구성 할 수 있습니까? 아니면 컨트롤러에이 조건을 포함해야합니까?Thinking Sphinx : 속성 쿼리가 비어있는 경우 속성을 반환하는 방법

제 초상권

class Article < ActiveRecord::Base 
belongs_to :category 

define_index do 
    indexes :name 
    indexes content 
    has category(:id), :as => :category_id 
end 
... 
end 

SearchController :

스핑크스 들어
@articles = Article.search params[:q], :with => {:category_id => params[:category]} 

답변

0

, NILS는/NULL 값이 '0'으로 간주되므로, 아니 PARAMS 경우 [: 장르] 값은 상기 제어기로 전달되며, 해당 속성에 대한 필터를 통과하지 않는 것이 가장 좋습니다. 아마도 이것과 같은 것일 수도 있습니다 :

filters = {} 
filters[:category_id] = params[:category] if params[:category].present? 

@articles = Article.search params[:q], :with => filters 
+0

그건 내가 상상 한 것입니다.하지만 당신의 해결책은 제 것보다 훨씬 깔끔합니다! – luizbranco