ruby-on-rails 如何在Rails中传递多个参数进行渲染?

kognpnkq  于 2022-11-19  发布在  Ruby
关注(0)|答案(2)|浏览(145)

下面是我的评论.html.erb:

<% provide(:title, 'All reviews') %>
<h1>All reviews</h1>

<ol class="reviews">
  <%= render @reviews %>
</ol>
<%= will_paginate @reviews %>

而my _review.html.erb看起来像这样:

<li>
   <p>Student: <%= Student.find(review.student_id).name%></p>
   <p>Score: <%= review.score%></p>
   <p>Review: <%= review.review%></p>
   <p>Created at: <%= review.created_at%></p>
</li>

我如何通过@学生以及渲染为例?
我试着在review.html.erb和
学生:〈%= student.name %〉
在_review. html. erb中。它不起作用。

92dk7w1h

92dk7w1h1#

实际上,您不需要传递多个参数,只需设置评语与学生之间的关联:
第一个
为了避免N+1查询问题,您应该使用includeseager_load来载入学生的检阅:

@reviews = Review.includes(:student)
                 .all

如果你真的想在呈现集合时传递额外的参数(这里不需要),你可以使用本地赋值:

<%= render @reviews, locals: { foo: 'bar' } %>

这将在部分中以foolocal_assigns(:foo)形式提供。

pw136qt2

pw136qt22#

  • 复习表与学生有关

_review.html.erb中,不需要使用Student.find(review.student_id)

<li>
   <p>Student: <%= review.student&.name%></p> // changed
   ....
</li>

相关问题