2010-04-06 4 views
0

J'ai un modèle d'événements qui contient diverses informations telles que la date, l'emplacement et la description de ce qui se passe.Rails - Recherche de plusieurs zones de texte et champs

Je voudrais que mes utilisateurs d'être en mesure de rechercher dans la liste des événements à travers un ensemble de différentes zones de texte, mais j'avoir du mal à obtenir la syntaxe juste

à mon avis je ...

<% 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 %> 

et dans le contrôleur que je suis en train d'interroger à travers les résultats ....

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 

Comment le code dois-je afin qu'il effectuera la recherche que si la zone de texte isnt vide?

si les deux zones de texte sont remplies, alors @events doit être le produit des DEUX requêtes? si avoir aucune idée si cela fonctionnerait => (??? @ event = @ événement + event.find ..... ???

Répondre

1

Dans ce cas, les params aura toujours :search_keyword et :search_zip mais les valeurs . sera vide/nul/vide Alors faire quelque chose comme ceci:. quiconque

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

peut penser à une façon de le faire pour de nombreux champs facultatifs les paramètres de recherche plus peut-être nul, nous avons le pire cette approche est – light24bulbs

Questions connexes