【问题标题】:acts_as_taggable_on not using tag cloud and contextact_as_taggable_on 不使用标签云和上下文
【发布时间】:2014-04-03 06:41:54
【问题描述】:

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

    Product.tagged_with("").joins(: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
    

    【讨论】:

    • 哇,谢谢。我对此仍然很陌生,那么这些代码会去哪里?在产品控制器中?
    • 是的,您应该将该代码放入您的产品控制器中。我将答案编辑为特定于控制器的答案。代码很简单。我试图编写一个我认为符合您需求的代码。随意调整它以满足您的特定需求。
    【解决方案2】:

    在摆弄这个太久之后,我无法让上面的代码工作。我也真的不想将直接标签写入我的控制器。因此,我在类别下构建了一个脚手架,称为子类别,它属于_to 类别和 has_many 产品。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多