1つのインデックスページに複数のモデルを一覧表示する方法はありますか?
私が4つのモデルを持っているように:ユーザー、エージェンシー、許可された人、メンターを1つのインデックスページにリストしたいと思います。
私が従うことができる特定のプロセスはありますか?
1つのインデックスページに複数のモデルを一覧表示する方法はありますか?
私が4つのモデルを持っているように:ユーザー、エージェンシー、許可された人、メンターを1つのインデックスページにリストしたいと思います。
私が従うことができる特定のプロセスはありますか?
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" %>
そして今、あなたのコードは素晴らしく、きちんとしていて、従うのが簡単です。
そのコントローラーのインデックスアクションで、これらすべてを照会することができます。
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. -->