2010-03-15 3 views
0

레일에서 간단한 검색 양식을 만들고 있습니다. 내 검색보기에서 내가 좋아하는 고정 된 값이 선택 상자가 있습니다레일에서 간단한 검색

SELECT BOX 1   SELECT BOX 2 
ALL,     ALL, 
FR,     FR, 
US,     US, 
DE     DE 

을 그리고 country_fromcountry_to 내 DB 2 개 필드가 있습니다.

그래서 같은 FR에서 US에 간단한 검색을 만들기 위해 내가 사용 : 나는 DE에서에 같은 검색을 할 때 괜찮지 만,

@search_result = Load.find(:all, :conditions => "country_from='#{params[:country_from]}' AND country_to='#{params[:country_to]}'") 

내가 너무뿐만 아니라, ALL 옵션을 구현해야 ALL 모든 국가의 목록을 country_to

이미지로 표시합니다. ifs ... 할 수있는 가장 효율적인 방법은 무엇입니까? 내가 제대로 이해하면

답변

1

것 :

내가로부터 값으로 고정 된 나라가있을 때 첫 번째 경우에 작동
cond = {} 
cond[:country_from] = params[:country_from] unless params[:country_from] == "AL" 
cond[:country_to] = params[:country_to] unless params[:country_to] == "AL" 

@search_result = Load.all(:conditions => cond) 
1

, 그것은이 당신이 할 것입니다

@search_result = Load.find(:all, :conditions => ["country_from = ? AND country_to IN (?)", params[:country_from], params[:country_to]]) 
+0

. 그러나 ALL을 선택하면 테이블에서 모두 쿼리해야합니다. 예를 들어 DE에서 ALL까지는 country_from = 'DE'인 쿼리를 의미합니다. – Adnan

+0

내가 원하는 것을 이해했다면이 방법이 효과적입니다. 이 검색은 예를 들어'country_from = DE' 및'country_to = [FR, US, DE]'와 함께'Load'를 반환합니다. –

관련 문제