プログラミングの学習をはじめて10日あまり...
もそは とうとうRailsのカリキュラムを終わらせることができました!嬉しい〜!
初代ポ◯モンで言うところの、ジムリーダーを全員倒してバッジをコンプしたといったところですね。
でもそれでいくとどう考えても四天王バトルできるほどレベル積めていないし、何ならリーグにたどり着くこともできない気が...
とにかく復習しつつ、エラー問題などをコツコツ頑張ろうと思います。
今日はコントローラとhtml.erbファイルの関係について書いていきます。
layoutフォルダにhtml.erbが2つあるのはなぜ?
今回私が学んだカリキュラムでは、layoutフォルダに
application.html.erb
review.site.html.erb
という2つのerbファイルがありました。
そもそも、なぜファイルを2つに分ける必要があるのか?
layoutフォルダに入っているので言うまでもないかもしれませんが、こちらはビューで表示する見た目のレイアウトをhtmlで記述したファイルです。
application.html.erbでは、トップページやマイページ画面に共通で表示されるパーツ(グローバルナビゲーションなど)や、ここには直接表示はされていないCSSやJSも記述されています。
一方review_site.html.erbでは、マイページ内でのランキング表示などの記述が書かれています。
ファイルを一つにまとめるとコードが長くなりすぎるのもありますが、もうひとつ理由があります。
これは、昨日述べたコントローラの継承が関係しています。
(コントローラについてはこちら)
コントローラの継承
こちらのコードを見てください。
class RankingController < ApplicationController
layout 'review_site'
これはApplicationControllerをRankingControllerが継承しています。
さらにlayoutは'review_site'、つまりreview_site.html.erbファイルの記述を参照するように指定しています。
そしてこちらは、
class ReviewsController < RankingController
RankingControlerをReviewControllerが継承しています。
図にするとこんな感じ。
ReviewsControllerとProductsControllerはRankingControllerを継承しているので、この2つもreview_site.html.erbを参照しています。
--
いかがでしょうか。
絵のクオリティの上達とプログラミングスキルの上達がまったく比例しませんが、もその修行はまだまだ続く...