使用acts_as_taggable链接到具有相同标记的所有帖子

时间:2017-05-14 19:53:21

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

所以我有acts_as_taggable正常工作。我可以在创建新帖子时添加标签,我可以在查看帖子时看到所有标签。我想要做的是为某些标签创建一个导航链接。例如,我想要一个显示“电影”的导航链接,当我点击该链接时,我希望我创建的所有帖子都显示标签“电影”。这是我的post_controller.rb

acts_as_taggable # Alias for acts_as_taggable_on :tags

extend FriendlyId
friendly_id :title, use: :slugged

belongs_to :author


scope :most_recent, -> { order(published_at: :desc) }
scope :published, -> { where(published: true) }
scope :with_tag, -> (tag) { tagged_with(tag) if tag.present? }

scope :list_for, -> (page, tag) do
 recent_paginated(page).with_tag(tag)
end

我的post.rb处理标签

{{1}}

1 个答案:

答案 0 :(得分:2)

您可以创建导航按钮可以链接到的自定义路线。

<%= link_to "Movies, tagged_posts_path("Movies") %>

在posts_controller中,为自定义路由创建方法。自定义路线可以使用'with_tag'范围仅将标有“电影”的帖子返回到您的视图。

def tagged
  @posts = Post.with_tag(params[:tag])
end

确保将新的自定义路由添加到路径文件中。

resources :posts do
  collection do
    get "/tagged/:tag", to: "posts#tagged", as: "tagged"
  end
end