前提
このようなテーブルがあったとします。
hoges テーブル
id | text | content_id |
---|---|---|
1 | morning | 1 |
2 | afternoon | 2 |
3 | evening | 2 |
4 | night | 3 |
5 | midnight | 3 |
6 | late night | 3 |
考え方
特定のidに紐づいた複数レコードのカラム情報をまとめて取り出すには、ビューの中で"インスタンス変数.each"という形でeachメソッドを使用すれば、データ情報を複数表示することが可能。
書き方
- eachメソッドを使用するには、配列を渡さなければいけない。whereメソッドを用いることで、条件に合致するオブジェクトを配列として取り出す。今回の場合は、Hoge(hogesテーブル)を指定し、whereメソッドを用いて、paramsで運んできたidがcontent_idと一致しているものを@hogesに代入。
hoges_controller.rb
def show
@hoges = Hoge.where(content_id: params[:id])
end
2. 考え方で述べたように、eachメソッドを使えば複数の情報を表示させることができる。例えば、下記のような記述になる。
show.html.erb
<% @hoges.each do |hoge| %>
<%= hoge.text %>
<% end %>
表示イメージ
上記の書き方をした場合、以下のような表示になると思います。
paramsにcontent_id "1" が入っていた場合
paramsにcontent_id "2" が入っていた場合
paramsにcontent_id "3" が入っていた場合
参考記事