2011-02-23 6 views
1

J'ai une boîte de recherche pour rechercher des produits. Chaque produit a un titre et est étiqueté avec plusieurs tags.Formulaire de recherche avec acts_as_taggable_on (Rails 3)

Je souhaite être en mesure de rechercher des produits par titre ou par étiquette. En d'autres termes, si j'ai un produit appelé "Thé vert" et un autre produit étiqueté "vert, rouge, bleu" et je tape "vert" dans la boîte de recherche, j'aimerais que les deux produits apparaissent dans les résultats de recherche. J'utilise Rails 3, acts_as_taggable_on, Ruby 1.9.2.

Répondre

8

Dans votre contrôleur, l'action qui affiche les résultats de la recherche pourrait ressembler à ceci (où: q est votre chaîne de requête dans la zone de recherche):

def results 
    @products = Product.where("title LIKE ?", "%#{params[:q]}%") \ 
    | Product.tagged_with("%#{params[:q]}%") 
end 
+0

parfait. Je vous remercie! – robzolkos

+1

Je ne comprends pas cette syntaxe ... avez-vous besoin d'un bijou ou quelque chose? – Noz

+0

La seule gemme sur laquelle repose cette fonction est "acts as taggable" où la requête ci-dessus utilise la méthode "tagged_with". Cela mis à part, Jamie montre comment utiliser la fonctionnalité widcard intégrée de Postgres! +1 internets à vous monsieur jamie – bkunzi01

Questions connexes