2

1つのインデックスページに複数のモデルを一覧表示する方法はありますか?

私が4つのモデルを持っているように:ユーザー、エージェンシー、許可された人、メンターを1つのインデックスページにリストしたいと思います。

私が従うことができる特定のプロセスはありますか?

4

2 に答える 2

0

Rubyuser、

はい、これは完全に正常な動作です。コントローラでは、@ 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 に答える