2

有什么方法可以在一个索引页面中列出多个模型?

就像我有 4 个模型:用户、机构、授权人员和导师,我想在一个索引页面中列出它们。

有没有我可以遵循的具体流程?

4

2 回答 2

0

红宝石用户,

是的,这是完全正常的行为。在您的控制器中,每当您使用 @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" %>

现在你的代码很好,很整洁,很容易理解。

于 2012-08-01T23:04:55.973 回答
0

您可以在该控制器的索引操作中查询所有这些:

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. -->
于 2012-08-01T22:50:27.777 回答