2

我目前正在呈现这样的帖子列表:

<%= render partial: "layouts/modules/forums/posts/post", collection: @topic.posts %>

这工作正常。但是,在 _post.html.erb 内部,我调用

<%= render partial: "layouts/users/name", user: post.user %>

这会呈现名称,但它有点重用它获得的第一个对象。为了帮助解释,我添加了一些调试:

<% puts("_post user: "+post.user.name) %>在 _post.html.erb 中,类似的放入 _name erb。(_post puts 在 _name 渲染之前)。这是结果:

_name user: User1
_post user: User1
_name user: User1
_post user: User2
_name user: User1

为什么这样做?您会期望 1. _post 出现在 _name 之前,以及 2. 当您传入 post 时,它会使用该帖子,而不是之前获得的帖子。

您能否向我解释一下,也许可以为我遇到的问题提供解决方案?谢谢!

4

1 回答 1

1

可能你应该在找到主题时包含帖子, Topic.find(params[:topic_id]).includes(:posts) 这解决了 n+1 查询问题

于 2013-11-21T18:50:24.223 回答