Rails - Поиск нескольких текстовых полей и полей - PullRequest
0 голосов
/ 06 апреля 2010

У меня есть модель событий, которая имеет различную информацию, такую ​​как дата, местоположение и описание происходящего.

Я бы хотел, чтобы мои пользователи могли осуществлять поиск по списку событий с помощью набора различных текстовых полей, но мне было трудно получить правильный синтаксис

На мой взгляд, у меня есть ...

<% form_tag users_path, :method => 'get' do %>
(<%= text_field_tag :search_keyword, params[:search_keyword] %>) + 
(<%= text_field_tag :search_zip, params[:search_zip] %>)
<%= submit_tag "Find Events!", :name => nil %>
<% end %>

и в контроллере я пытаюсь запросить результаты ....

 if params[:search_keyword]
     @events = Event.find(:all, :conditions => [' name LIKE ? ',     "%#{params[:search_keyword]}%"])
 elsif  params[:search_zip]
     @events = Event.find(:all, :origin=> params[:search_zip], :within=>50 )
 else
          @events = Event.find(:all)
  end

Как мне его кодировать, чтобы он выполнял поиск, только если текстовое поле не пустое?

также, если оба текстовых поля заполнены, то @events должен быть продуктом ОБА запросов? если не знаю, сработает ли это => (??? @ event = @ event + event.find ..... ???

1 Ответ

1 голос
/ 06 апреля 2010

В этом случае параметры всегда будут иметь :search_keyword и :search_zip, но значения будут пустыми / ноль / пустыми. Так что сделайте что-то вроде этого:

if !params[:search_keyword].blank? && !params[:search_zip].blank?
  # build query for both
elsif !params[:search_keyword].blank?
  # build for keyword
elsif !params[:search_zip].blank?
  # build for zip
else
  # all
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...