простой поиск по рельсам - PullRequest
0 голосов
/ 15 марта 2010

Я делаю простую форму поиска в рельсах. В моем поиске у меня есть два поля выбора с фиксированными значениями, такими как:

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, я получаю список со всеми странами в country_to

Я представляю, что могу сделать это с помощью ifs ... но какой самый эффективный способ сделать это?

Ответы [ 2 ]

1 голос
/ 15 марта 2010

Вот что вы делаете:

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 голос
/ 15 марта 2010

если я правильно понял, это было бы

@search_result = Load.find(:all, :conditions => ["country_from = ? AND country_to IN (?)", params[:country_from], params[:country_to]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...