LoginSignup
6
6

More than 3 years have passed since last update.

layoutメソッドと includesメソッドについて

Posted at

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:が記述されている意味がいまいち理解することができなかった。
そのため、理解できる方は、ご指摘いただけると助かります。よろしくお願いします。

                                以上 

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6