所以我正在做迈克尔·哈特尔的铁路教程,我在第9章。这一段代码用于分页,其中渲染用户渲染部分(名为_user),其中包含用于个人资料图片和用户名的嵌入式红宝石
<% provide(:title, 'All users') %>
<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
<% @users.each do |user| %>
<%= render user %>
<% end %>
</ul>
<%= will_paginate %>
但是这段代码被重构为
<% provide(:title, 'All users') %>
<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
<%= render @users %>
</ul>
<%= will_paginate %>
我现在的问题是Rails如何知道渲染部分_user,因为没有明确的指示这样做?我试过更改部分的名称来弄清楚如何,但我还是不知道。例如,我重命名了部分_users并导致错误。谢谢你的帮助。
答案 0 :(得分:0)
它知道您所创建的@users
集合由类User
的实例组成,因此当您在视图中调用render @users
时,它会查找名为{的文件{1}}并为集合中的每个_user.html.erb
实例端到端地呈现该文件。在partial中,您可以使用User
访问部分对应的User
实例的迭代。
如果您有一个名为user
的集合,它由类@my_collection
的实例组成,那么Howdy
会查找名为render @my_collection
的部分并呈现它对于_howdy.html.erb
中的每个Howdy
实例。部分对应的@my_collection
实例的迭代可以在部分内以Howdy
形式访问。