2010-03-15 80 views
0

我正在轨道中做一个简单的搜索表单。在我搜索视图我有一样的固定值的两个选择框:简单的轨道搜索

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

而且我有我的DB 2场与country_fromcountry_to

所以对于制作一个简单的搜索像FRUS我用:

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

这很好,但我需要实现ALL选项为好,所以当我做出这样从DE到搜索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

,在第一种情况下,当我有一个固定的国家从和值的作品。但是,当我选择所有它需要从表中查询所有。例如从DE到ALL,意思是查询where country_from ='DE'。 – Adnan 2010-03-15 13:12:36

+0

如果我明白你想要什么,这对你有用。这个搜索将返回,例如,每一个'Load'都带有'country_from = DE'和'country_to = [FR,US,DE]'。 – 2010-03-15 13:22:19