acts_as_taggable_on不使用标签云和上下文

时间:2014-04-03 06:41:55

标签: ruby-on-rails-3 ruby-on-rails-4 acts-as-taggable-on

我有一个以分类开头的应用。一个类别有很多产品,产品可以有标签。这个应用程序不适合使用标签云,因此我希望在页面顶部有一个标签列表以相同的方式工作。

这是针对农业商店,因此有不同的类别可能具有相同的标签 - 例如可能有狗(类别)食品(标签)和猫(类别)食品(标签)。我如何确保只显示与类别和标签相关的产品?

谢谢。

2 个答案:

答案 0 :(得分:0)

Product.tagged_with("")。join(:category).where(category:{name:''})

Product.tagged_with(["<food tag1>", "food tag2"], :match_all => true).joins(:category).where(category:{name: '<category>'})

要控制标签在产品检索中的使用方式,您可以选择以下选项:

Product.tagged_with(["x", "y"], :match_all => true)
Product.tagged_with(["x", "y"], :any => true)
Product.tagged_with(["x", "y"], :exclude => true)

在您的控制器中:

def index

  @products = Product.tagged_with(params[:tags], :match_all => true).joins(:category).where(category:{name: params[:category})

end

答案 1 :(得分:0)

经过长时间的摆弄,我无法获得上述代码。我也真的不想在我的控制器中写直接标签。因此,我在一个名为Sub Categories的类别下构建了一个脚手架,它属于Category和has_many产品。