有什么方法可以在一个索引页面中列出多个模型?
就像我有 4 个模型:用户、机构、授权人员和导师,我想在一个索引页面中列出它们。
有没有我可以遵循的具体流程?
有什么方法可以在一个索引页面中列出多个模型?
就像我有 4 个模型:用户、机构、授权人员和导师,我想在一个索引页面中列出它们。
有没有我可以遵循的具体流程?
红宝石用户,
是的,这是完全正常的行为。在您的控制器中,每当您使用 @myvariable 指定变量时,它都是在控制器和视图范围内可用的实例变量。没有@ 的变量是仅在该方法中可用的局部变量。
所以当你这样做时,在你的控制器中:
class Foos < ApplicationController
def index
@foos = Foo.all
@bars = Bar.all
end
end
然后,您可以在视图中引用 @foos 和 @bars。
<h1>My foos and bars</h1>
<table>
<thead>
<th>foo</th>
</thead>
<tbody>
<% @foos.each do |f| %>
<tr>
<td>f.name</td>
</tr>
<% end %>
</tbody>
</table>
<table>
<thead>
<th>bar</th>
</thead>
<tbody>
<% @bars.each do |b| %>
<tr>
<td>b.name</td>
</tr>
<% end %>
</tbody>
</table>
现在,为了让事情更干净,您可能需要考虑使用部分。创建一个名为_bars_index.html.erb的文件并复制包含条码的表格。
将其替换为
<%= render "bars_index" %>
现在你的代码很好,很整洁,很容易理解。
您可以在该控制器的索引操作中查询所有这些:
class MyController < ApplicationController
def index
@users = User.all
@agencies = Agency.all
@authorized_people = AuthorizedPerson.all
@mentors = Mentor.all
respond_to do |format|
format.html
end
end
# ...
end
并在您的视图中正常引用它们:
<% @agencies.each do |agency| %>
<!-- do stuff -->
<% end %>
<% @users.each do |user| %>
<!-- do more stuff -->
<% end %>
<!-- etc. -->