对于带有OR的for循环内的循环
我有点卡住了。
我想要回复我的post和我的follow_userspost。
我有一个名为“followed_users”的关联,所以我可以调用@ user.followed_users
这适用于“follow_users”post。 我还想包括我的post。 所以我的计划是首先检查我的post,然后遍历所有,看看哪个属于我的follow_users。
我的实现是返回我的post,但不是所有的follow_users。
我是在正确的轨道上吗?
不,真的不这样做,你不能负担所有对象的循环。
做这个:
#in a partial, say _post_details.html.erb <%= post.user.name %> <%= post.body %>
在您的主视图中:
<% current_user.followed_users.each do |friend| %> <%= render partial: "post_details", collection: friend.posts, as: :post %> <% end %> <%= render partial: "post_details", collection: current_user.posts, as: :post %>
顺便说一句,要小心很可能的N+1
查询(粉丝 – >post)。
在您发表评论后,我建议您这样做:
ids = current_user.followed_users.map(&:id) + [ current_user.id ] @posts = Post.where(user_id: ids)
然后在你看来:
<%= render partial: "post_details", collection: @posts, as: :post %>