layoutメソッドとincludesメソッドの復習アウトプット
1.はじめに
以下のようなコードを例にして、layoutメソッドと includesメソッドについて、復習していく。
items_controller.rb
class ItemsController < ApplicationController
layout 'hogehoge'
def index
@items = Item.includes(items_users: :users)
end
end
2.layoutメソッドについて
layoutメソッドとは、コントローラによって、ヘッダー・フッターのデザインを変更したり、読み込むCSSを切り替えるメソッドである。
layoutメソッドは、他にも細かい使い方があるが、今回は、「コントローラ単位で適用するレイアウトの指定」について解説する。
※他に詳しく知りたい方は、以下のURLにアクセスしてみてください!
https://www.javadrive.jp/rails/template/index3.html
コントローラ単位で適用するレイアウトの指定する場合、コードの書き方としては、以下のようになる。
class コントローラ名 < ApplicationController
layout 'レイアウトファイル名'
def アクション名
end
end
コントローラに記述ができたら、次にlayoutsのビューファイルを作成する。
ファイル名の作成方法は、layouts/レイアウトファイル名.html.erbという書き方をする。
今回の具体例では、layout 'hogehoge'としていしているため、
layouts/hogehoge.html.erbというファイル名となる。
上記のようにコントローラ、ビューの設定ができた場合、どのような処理が行われるのか、について解説する。
itemsコントローラのアクションが呼び出された場合、レイアウトファイルとしてapp/views/layouts/hogehoge.htmlが使われるようになる。
また、何も指定しない場合はapp/views/layouts/application.htmlが読み込まれるようになるという処理が行われる。
3.includesメソッドについて
includesメソッドについての定義や役割については、以下の記事をご覧ください。
https://qiita.com/okamoto_ryo/items/d4cfeb3aab97e8d50c8a
includesメソッドの書き方は、includes(:モデル名)という書き方になる。
そのため、今回の具体例では、のような書き方となる。
@items = Item.includes(items_users: :users)
しかしながら、私見では、なぜitems_users:が記述されている意味がいまいち理解することができなかった。
そのため、理解できる方は、ご指摘いただけると助かります。よろしくお願いします。
以上