Ruby on rails For循环内For循环带或

Ruby on rails For循环内For循环带或,ruby-on-rails,ruby,loops,for-loop,iteration,Ruby On Rails,Ruby,Loops,For Loop,Iteration,我有点卡住了 我想返回我的帖子和我的帖子 我有一个名为“followed_users”的关联,因此我可以呼叫@user.followed_users <% for friends in current_user.followed_users %> <% for post in friends.posts %> <%= post.body %> <% end %> <% end %> 但是,这只适用于“关注用户”的帖子。我

我有点卡住了

我想返回我的帖子和我的帖子

我有一个名为“followed_users”的关联,因此我可以呼叫@user.followed_users

<% for friends in current_user.followed_users  %>
 <% for post in friends.posts %>
  <%= post.body %>
 <% end %>
<% end %>

但是,这只适用于“关注用户”的帖子。我还想包括我的帖子。因此,我的计划是首先检查我的帖子,然后遍历所有帖子,看看哪些帖子属于我的用户

我的实现正在返回我的帖子,但不是所有被跟踪的用户

我走对了吗

<% for post in Post.all %>
 <% if post.user_id == current_user.id ||
   for friends in current_user.followed_users
    for post in friends.posts
    end
  end %>
   <li>
    <%= post.user.name %>
    <%= post.body %>
   </li>
 <% end %>
<% end %>         


  • 不要,真的不要这样做,你负担不起循环所有对象的费用

    这样做:

    #in a partial, say _post_details.html.erb
    <li>
      <%= post.user.name %>
      <%= post.body %>
    </li>
    
    那么在你看来,

    <%= render partial: "post_details", collection: @posts, as: :post %>
    

    不要,真的不要这样做,你负担不起循环所有对象的费用

    这样做:

    #in a partial, say _post_details.html.erb
    <li>
      <%= post.user.name %>
      <%= post.body %>
    </li>
    
    那么在你看来,

    <%= render partial: "post_details", collection: @posts, as: :post %>
    
    
    
    嘿,谢谢你的意见。我试图将结果保存在一次调用中,以便更容易排序。对当前的用户帖子和好友帖子进行排序,并按第一次创建的进行排序。嘿,一个后续问题。ids=current_user.followed_users.map(&:id)+[current_user.id]posts=Post.where(user_id:ids)在来自同一个模型时工作得非常好。但是,如果它们来自不同的型号,您建议我如何处理。不过,当我尝试遍历它们时,它们的不同属性会导致问题,谢谢您的输入。我试图将结果保存在一次调用中,以便更容易排序。对当前的用户帖子和好友帖子进行排序,并按第一次创建的进行排序。嘿,一个后续问题。ids=current_user.followed_users.map(&:id)+[current_user.id]posts=Post.where(user_id:ids)在来自同一个模型时工作得非常好。但是,如果它们来自不同的型号,您建议我如何处理。但是,当我尝试迭代时,它们的不同属性会导致问题