我有一个以分类开头的应用。一个类别有很多产品,产品可以有标签。这个应用程序不适合使用标签云,因此我希望在页面顶部有一个标签列表以相同的方式工作。
这是针对农业商店,因此有不同的类别可能具有相同的标签 - 例如可能有狗(类别)食品(标签)和猫(类别)食品(标签)。我如何确保只显示与类别和标签相关的产品?
谢谢。
答案 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产品。