2010-04-06 5 views
0

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

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

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

<% 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.find ..... ???

ответ

1

В этом случае PARAMS всегда будет иметь :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 
+0

Может кто-нибудь придумать способ сделать это для многих необязательных полей Чем больше, возможно, ноль параметры поиска мы хуже этот подход – light24bulbs