【Ruby】レイアウトテンプレート

今回はレイアウトテンプレートという機能について

まとめていきたいと思います。

 

レイアウトテンプレートとは何か。

それはページごとにビューを作成すると思うのですが、

全てのページに共通して表示されるものってありますよね。

 

ヘッダーとかフッダーとか。

 

そういった部分に関しては全てのビューファイルに記載していたら

とっっっても面倒くさいので、一つのファイルにまとめようっていうものです。

 

Railsの場合どこに記載するかというと、

application.html.erbというファイルに記載しましょう。

こちらがレイアウトテンプレートに該当するファイルで、

app/views/layoutディレクトリに配置されています。

 

ちなみにこのファイルをレイアウトファイルとも呼びます。

このファイルを開いてみると、

ありがたいことにすでにhead要素やbody要素がすでに記載されているんです。

 

そしてbody要素に書いてある

<%= yield %>

について説明しましょう。

 

これはyieldメソッドといいます。

何かというと各ファイルに展開するためのメソッドです。

 

つまりindexアクションが実行されたら、index.html.erbの内容が、

newアクションが実行されたら、new.html.erbの内容が、

この<%= yield %>の部分に展開されるようになっています。

 

なので全てのビューファイルが

このレイアウトファイルに集約されているイメージです。

便利ですね!!!!

 

なのであとはレイアウトファイルのbody要素の中の

headerやfooterを編集しておけばOKです!

そして二つの間に<%= yield %>を忘れずに!

 

次に併せてRailsにおけるCSSの読み込みも

学んでおきましょう。

どうやらレイアウトテンプレートのhead要素をみてみると、

<%= stylesheet_link_tag  ' application ' ,  media : ' all ' , ' date-turbolinks-track' : ' reload'  %>

という記載があります。

 

まずはstylesheet_link_tagメソッドを理解していきましょう。

これは読み込むCSSを指定できるヘルパーメソッドです。

CSSファイルはapp/assets/stylesheets/ディレクトリにあります。

 

このコードの場合、

stylesheet_link_tag  ' application '

と引数に application と書いてあるため、

これはapplication.cssを読み込むよーっていってます。

 

application.css

こちらの方はRailsに初めから用意されている

CSSファイルをまとめるためのファイルです。

通用マニフェストファイルです。

 

開いてみると色々と書いてありますが、

注目すべきは *= require_tree . という記述です。

 

require.treeとはなんぞとのことですが、

こちらは引数として与えられたディレクトリのCSS

アルファベット順に全て読み込むよ!という機能を持ってます。

 

今回の引数はお分かりでしょうか?見えてますか?

. です!これ   !

このドットは、カレントディレクトリを表しています。

 

つまり

app/assets/stylesheets/

このディレクトリです。

 

なのでこの require.tree. の記載によって、

このディレクトリの中のCSSファイルは全て

application.cssファイルに読み込まれることになります。

 

ではこれを踏まえてこのディレクトリに

style.cssファイルを作成しましょう。

 

また画像ファイルを配置したい場合は

app/assets/imagesディレクトリに配置します。

 

以上が、レイアウトテンプレートをはじめとする

見た目を整えるためのお話でした!