0

我正在使用 Rails 5.1,我 在我的帖子模型中使用acts-as-taggable-on gem https://rubygems.org/gems/acts-as-taggable-on 。

我想问一下如何在我的帖子索引中显示我的所有标签列表?

例如。我有名为鞋子、钱包、手表的标签。我想在我的帖子索引中显示这些标签。当我点击鞋子时,它将呈现与鞋子标签链接的所有帖子。

我的架构:

    create_table "taggings", id: :serial, force: :cascade do |t|
    t.integer "tag_id"
    t.string "taggable_type"
    t.integer "taggable_id"
    t.string "tagger_type"
    t.integer "tagger_id"
    t.string "context", limit: 128
    t.datetime "created_at"
    t.index ["context"], name: "index_taggings_on_context"
    t.index ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true
    t.index ["tag_id"], name: "index_taggings_on_tag_id"
    t.index ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
    t.index ["taggable_id", "taggable_type", "tagger_id", "context"], name: "taggings_idy"
    t.index ["taggable_id"], name: "index_taggings_on_taggable_id"
    t.index ["taggable_type"], name: "index_taggings_on_taggable_type"
    t.index ["tagger_id", "tagger_type"], name: "index_taggings_on_tagger_id_and_tagger_type"
    t.index ["tagger_id"], name: "index_taggings_on_tagger_id"
  end

我的后期控制器

def index
    @posts = Post.list_for(params[:page], params[:tag]).search(params[:search])
end

感谢你们对我的帮助。

4

1 回答 1

0

检索所有标签:

ActsAsTaggableOn::Tag.all

检查此链接以获取更多信息:https ://github.com/mbleigh/acts-as-taggable-on/wiki/Tutorial-for-Posts#controller

也可以按上下文检索标签,请检查:https ://github.com/mbleigh/acts-as-taggable-on/wiki/Get-all-tags-by-context

注意!

ActsAsTaggableOn::Tag

是一个简单的 ActiveRecord 模型。所以你可以像这样调用查询:

existing_posts_tags = ActsAsTaggableOn::Tag.joins(:taggings).where(taggings: { teggable_type: 'Post' })
于 2018-07-09T11:50:47.610 回答