【问题标题】:How to display acts_as_taggable tags on a page with the posts underneath each tag in Rails?如何在页面上显示acts_as_taggable标签以及Rails中每个标签下的帖子?
【发布时间】:2015-06-21 22:50:06
【问题描述】:

我正在使用 gem acts_as_taggable_on。我已经设置并正常工作。我正在尝试创建一个页面,列出所有标签以及它们所属的每个标签下的帖子?

(标签 1)

  • 用标签 1 标记的帖子
  • 用标签 1 标记的帖子
  • 用标签 1 标记的帖子

(标签 2)

  • 使用标签 2 标记的帖子
  • 使用标签 2 标记的帖子
  • 使用标签 2 标记的帖子

(标签 3)

  • 使用标签 3 标记的帖子
  • 使用标签 3 标记的帖子
  • 使用标签 3 标记的帖子

这是我的代码,我在一个页面上显示了所有标签,但我无法让帖子显示在标签下方?

标签控制器:

def index
    @tag   = current_user.owned_tags
    @posts = current_user.posts.tagged_with(@tag.name)
end

标签索引视图:

<div class="tag-lists">
    <% @tag.each do |tag| %>

        <div><%= tag.name %></div>

        <% @posts.each do |post| %>
            <div><%= post.title %></div>
        <% end %>

    <% end %>
</div>

【问题讨论】:

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


    【解决方案1】:

    您需要迭代每个标签的每个帖子

    在您的控制器上:

    def index
        @user  = current_user
        @tags  = @user.owned_tags
    end    
    

    在你看来:

    <div class="tag-lists">
        <% @tags.each do |tag| %>
    
            <div><%= tag.name %></div>
    
            <% @user.posts.tagged_with(tag.name).each do |post| %>
              <div><%= post.title %></div>
            <% end %>
    
        <% end %>
    </div>
    

    【讨论】:

    • 我没有收到任何错误,但我只得到一个标签列表,它们不是它们下面的任何帖子。
    • 从浏览器请求页面的源代码,看看是否写了div?
    • 不,没有写入 div。只是带有标签的 div。
    • 很奇怪,进入 rails 控制台,并与任何你认识的至少有一个带有一个标签的帖子的用户尝试以下操作:user = User.find(user_id_you_already_know)tag = Tag.find(tag_id_you_already_know)posts = user.posts.tagged_with(tag.name) 并验证你是否得到任何帖子,你应该,因为你要求用户创建的具有特定标签的所有帖子
    • 是的,我得到了与标签相关的帖子。
    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多