2010-05-11 3 views
0

J'ai une liste déroulante de Type dans mon Products modèle. Je veux être en mesure de rechercher dans le Products index.html.erb afin qu'un utilisateur sélectionne un type dans une liste déroulante, clique sur recherche et tous les produits correspondant à ce type sont retournés.ruby ​​recherche déroulante

Je peux obtenir des méthodes de recherche normales de travail où l'utilisateur entre dans leur recherche dans une zone de texte, mais je ne peux pas le faire fonctionner quand ils ne font que sélectionner dans une liste déroulante.

Quelqu'un peut-il aider?

+0

Je préférerais faire cela sans avoir à ajouter plus de plugins – user338454

Répondre

1

Dans votre contrôleur:

def index 
    @products = Product.all :conditons => {:type => params[:type]} 
end 

À votre avis:

<% form_tag products_path, :method => :get do %> 
    <%=select_tag :type, options_for_select(Product::TYPES.map{ |type| [type, type]}), :onchange => "this.form.submit();" %> 
    <%=submit_tag "Search" %> 
<% end %> 

NB: Le options_for_select accepte un tableau de paires comme [étiquette, valeur], nous utilisons donc la carte pour le construire.

+0

Je stocke Tapez le produit en tant que chaîne. Dans le modèle de produit, j'ai défini les options pour Type avec TYPES = ["type1", "type2"] – user338454

+0

Et le code que j'ai posté ne fonctionne pas? Cela vous donne-t-il une erreur? –

+0

Mon problème est que je n'arrive pas à chercher réellement car je ne sais pas comment avec une liste déroulante, c'est ce que j'ai dans le index.html.erb trouver le type <% = select ("product", "type", Product :: TYPES)%> <% = submit_tag "Rechercher",: name => "submit_search",: class => "button"%> – user338454

Questions connexes