2020-5-7 モックアップについて
12時起床.勉強時間は9h.
モックアップについて軽くまとめる
参考(黒田努,佐藤和人. 改訂4版 基礎Ruby on Rails (基礎シリーズ) (Japanese Edition) )
レイアウトテンプレート
ウェブサイトではページごとのデザインを統一する必要ある(バラバラだと面倒だし統一感ないしね).そこで使うのが「レイアウトテンプレート」である.
ページには「枠」と「コンテンツ」があり,レイアウトテンプレートは「枠」にあたる.これは一度作ればいろいろなページに流用できるから便利だ.
レイアウトテンプレートはapp/views/layoutsディレクトリの下においたテンプレートをレンダリングして,それをレイアウトテンプレートの中に埋め込む.そしてテンプレートを埋め込んだレイアウトテンプレート(application.html.erb)全体を出力する.
application.html.erb自体はrails newコマンドを使ったら自動でapp/views/layoutsの下に生成される(便利).そして,いろいろなテンプレート,ページごとのコンテンツ(index aboutとか)は<%= yield %>に埋め込まれる.
レイアウトテンプレートの切り替え
切り替え方は三つ
1.app/views/layoutsディレクトリにtop.html.erbのようにファイル名が「コントローラ名.html.erb」のテンプレートを置く
2.コントローラでlayoutメソッドを使う.この場合引数は文字列.
3.アクション内でrenderメソッドにlayoutオプションを付けてテンプレートファイル名を指定する.layoutオプションを使えば、ある条件の場合にだけレイアウトを切り替えることができる.
レイアウトの継承
ApplicationControllerにlayoutメソッドを記述すると,すべてのコントローラにレイアウトが継承されます.たとえば,次のようにApplicationControllerでレイアウトを指定したとします.
classApplicationController<ActionController::Baselayout"application"
end
そして次のようにTopControllerとHelpControllerを定義したとします.classTopController<ApplicationController
end
classHelpController<ApplicationController
layout"simple"
end
この場合,TopControllerではapp/views/layouts/application.html.erbが,HelpControllerではapp/views/layouts/simple.html.erbがレイアウトとして使われます.
黒田努,佐藤和人. 改訂4版 基礎Ruby on Rails (基礎シリーズ) (Japanese Edition) (Kindle の位置No.2993-3001). Kindle 版.