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

やりたいこと。

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

モデル

parent.rb

has_many :children

children.rb

belongs_to :parent

コントローラ

parent.controller

def index
 @parents = Parent.includes(:children).all
end

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

ビュー

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

index.html.erb

<% @parents.each do |parent| %>
 <%= parent.last_name %>

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

<% end %>

See Also