現在、次のような投稿のリストをレンダリングしています。
<%= 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 の同様の puts で。(_post puts は _name render の前です)。結果は次のとおりです。
_name user: User1
_post user: User1
_name user: User1
_post user: User2
_name user: User1
なぜこれを行うのですか?1. _post が _name の前に来ること、および 2. post を渡すと、以前に取得したものではなく、post を使用することが予想されます。
このことを説明していただけますか。また、私が抱えている問題の解決策を教えていただけないでしょうか? ありがとうございました!