2

我有一个带有 Thinking Sphinx 的网站,用于返回产品名称、标签、描述等的搜索结果。工作正常。

但是,当我从 TS 获取一组搜索结果时,尝试从 Acts_as_Taggable_On 获取 tag_counts 时出现“无方法”错误。我发现该错误扩展到了一系列情况,我可能会在标记项目的集合上调用 tag_counts 方法。

这些工作:

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

但这些不会:

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

(后者调用一个 Thinking Sphinx 搜索,返回一个 TS 搜索集合。)

他们返回此错误的一些变体:

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

我有一个模糊的想法,这是某种代理方法的事情,它在前一个调用而不是后者上得到了正确的关联。

有人对我如何确保标记对象数组具有可用的 tag_counts 方法有任何建议吗?

4

1 回答 1

0

Product.all返回一个数组,并且您尝试tag_counts在该数组上运行该方法,但该方法不起作用,因为该数组没有该方法。

您可能想要做的是:

Product.tag_counts

它应该返回所有产品的标签计数。

于 2011-07-18T11:45:34.827 回答