【问题标题】:How to find posts with multiple tags using acts_as_taggable_on (Rails)如何使用acts_as_taggable_on(Rails)查找具有多个标签的帖子
【发布时间】:2014-09-23 00:19:06
【问题描述】:

例如,如果我想查找所有带有“音乐”和“披头士”标签的帖子,我该怎么做?而且,我如何在我的路线中放置这样的帖子列表?注意:我正在使用acts_as_taggable gem 来制作我的标签。

【问题讨论】:

  • 您是否考虑过使用像 ransack 这样的宝石?
  • 我需要它来为带有这些特定标签的帖子提供类似“link_to”的东西。 (虽然 ransack 看起来肯定是我将来可以使用的东西 :))

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


【解决方案1】:

来自documentation

# Find users that matches all given tags:
User.tagged_with(["awesome", "cool"], :match_all => true)

如果您遇到困难,文档中还有很多其他使用示例。

我不确定您所说的“我的路线中的帖子列表”是什么意思。如果您想显示被这些标签标记的用户(在上面的示例中),请尝试以下操作:

# index action controller
@users = User.tagged_with(["awesome", "cool"], :match_all => true)

# index.html.erb
<% @users.each do |u| %>
  <%= u.name %>
  <%= u.whatever %>
<% end %>

编辑 我认为根据您对问题的评论,您希望创建一个链接以查看所有被您指定标签标记的用户。在这种情况下,请在您的用户屏蔽下设置一条客户路线(在本例中)。

resources :users do
  collection do
    get :tagged
  end
end

然后&lt;%= link_to 'Tagged', tagged_users_path(tag1: "cool", tag2: "supernice") %&gt;

控制器tagged 操作:

@users = User.tagged_with([params[:tag1], params[:tag2]], :match_all =&gt; true)

然后在您的视图中显示您喜欢的任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多