我在rails中制作一个简单的搜索表单。在我的搜索视图中,我有两个具有固定值的选择框,如:
SELECT BOX 1 SELECT BOX 2
ALL, ALL,
FR, FR,
US, US,
DE DE
我的数据库中有2个字段country_from
和country_to
。
因此,对于从FR
到US
进行简单搜索,我使用:
@search_result = Load.find(:all, :conditions => "country_from='#{params[:country_from]}' AND country_to='#{params[:country_to]}'" )
这很好,但我也需要实施ALL
选项,因此当我从DE
到ALL
进行搜索时,我会在{{}}中找到包含所有国家/地区的列表{1}}
I image我可以用ifs来做...但是最有效的方法是什么?
答案 0 :(得分:1)
如果我理解正确,那就是
@search_result = Load.find(:all, :conditions => ["country_from = ? AND country_to IN (?)", params[:country_from], params[:country_to]])
答案 1 :(得分: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)