LoginSignup
1
0

More than 5 years have passed since last update.

もそ、プログラミングを学ぶ【Ruby on Rails】〜コントローラ継承と2つのhtml.erbファイル〜

Last updated at Posted at 2019-04-17

プログラミングの学習をはじめて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が継承しています。
図にするとこんな感じ。

無題1149.jpeg

ReviewsControllerとProductsControllerはRankingControllerを継承しているので、この2つもreview_site.html.erbを参照しています

--
いかがでしょうか。
絵のクオリティの上達とプログラミングスキルの上達がまったく比例しませんが、もその修行はまだまだ続く...

1
0
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
1
0