2011-07-17 2 views
2

J'ai un site avec Thinking Sphinx mis en place pour renvoyer les résultats de recherche pour les noms de produits, tags, descriptions, etc. Fonctionne bien.Rails: Génération de balises Acts_as_Taggable_On nombre de balises à partir de la collection d'objets balisés

Cependant, lorsque j'obtiens un groupe de résultats de recherche de TS, j'obtiens une erreur "no method" lorsque j'essaie d'obtenir tag_counts à partir de Acts_as_Taggable_On. J'ai constaté que l'erreur s'étend à une série de situations où je pourrais appeler la méthode tag_counts sur une collection d'éléments étiquetés.

Ces travaux:

Owner.first.products.all.tag_counts 
Product.where(:color => 'white').tag_counts 
Product.first.tag_counts 

Mais ceux-ci ne le font pas:

Product.all.tag_counts 
Product.search('white').to_a.tag_counts 

(. Ce dernier appelle un Thinking recherche Sphinx qui retourne une collection de recherche TS)

Ils reviennent avec une variante de cette erreur:

NoMethodError: undefined method `tag_counts' for #<Array:0x00000101585280> 

J'ai une idée vague c'est une sorte de méthode de proxy où il est associé correctement sur les appels précédents, mais pas le dernier.

Quelqu'un at-il des suggestions sur la façon dont je peux m'assurer qu'un tableau d'objets étiquetés a la méthode tag_counts disponible?

Répondre

0

Product.all Retourne un tableau et vous essayez d'exécuter la méthode tag_counts sur ce tableau qui ne fonctionnera pas, car le tableau n'aura pas cette méthode.

Qu'est-ce que vous vouloir probablement faire est:

Product.tag_counts 

Il doit retourner les comptes d'étiquette pour tous les produits.

+0

Ok, mais que se passe-t-il si j'essaie de l'exécuter sur le tableau de résultats renvoyés par Thinking Sphinx lorsque j'appelle Product.search ('foo'), ou tout autre tableau arbitraire de produits? – tomkarlo

+0

Product.search ('white'). Tag_counts devrait fonctionner correctement s'il existe une méthode de classe appelée tag_counts sur la classe de produit. –

Questions connexes