has_many関係にあるテーブルの値をビューで呼び出す

Sat Aug 12, 2017 - rails
Mon Jan 13, 2020

やりたいこと。

一覧ページにhas_many関係にある親と子を表示させたい。 似たような質問がありましたが、一応、ここにメモ。

モデル

1
2
# parent.rb
has_many :children
1
2
# children.rb
belongs_to :parent

コントローラ

1
2
3
4
# parent.controller
def index
 @parents = Parent.includes(:children).all
end

includesメソッドを使うのがミソ。includesメソッドは関連するモデルをまとめて取得してくれます。構文はincludes(関連名)です。

ビュー

親の苗字(last_name)と子供の下の名前(first_name)を表示させたい。

1
2
3
4
5
6
7
8
9
# index.html.erb
<% @parents.each  do |parent| %>
 <%= parent.last_name %>

  <% parent.children.each  do |child| %>
    <%= child.first_name %>
  <% end  %>

<% end %>
See Also