[Rails]部分テンプレート(render partial)について解説
部分テンプレート(render partial)とは
部分テンプレート 英語で"render partial"
英単語直訳
render : 〔人・物を~の〕状態にする,与える,提供する,提出する
partial : 部分的な、一部の、一部分の
複数のページで共通して利用できるViewファイルのことを、
部分テンプレート(render partial)という。
=> View内で共通パーツ、繰り返し処理をするパーツは部分テンプレートを使う。
<部分テンプレートを使用するメリット>
一言で言うと 可読性と汎用性の向上 になるから!
- 記述するコードの量が減って、見やすいコードになる。
- 同じ記述を何度も書く必要がない。
- 修正が必要な場合、修正の対象箇所を減らせる。
- ファイルサイズを小さくできる(重複記述が減るから)。
部分テンプレート作成方法
- 共通化できる部分を探す
- 部分テンプレートファイルを作成
- 共通化するコードを切り取る
- 部分テンプレートファイルに共通化部分を記述する
- 部分テンプレート用にコードを書き換える
=> インスタンス変数をローカル変数に。 - 部分テンプレートファイルを呼び出す
記述方法
<ファイル名 規則>
ファイル名の先頭に、アンダースコア(_)付きのファイルにすること。
(Rubyはこれで、部分テンプレートファイルとして認識)
<コードの記述方法>
これは上部で記述した作成手順の、"6"に当たるところ。
部分テンプレートの元にしたファイルに以下のように記述。
日本語でわかりやすくすると、このようになる。
<%= render :呼び出すファイル名 , 呼び出すファイル内で用いる変数 : 渡す値 %>
"なぜこの形なのか"を含めて,注意点含めて、以下からわかりやすく解説します。
注意点1:部分テンプレート内でインスタンス変数は基本使用しない
理由は、
部分テンプレートの再利用性が低くなる(依存度が高くなってしまう)ため。
もっと簡単にいうと、
controller側でインスタンス変数の名前や挙動を変更したとき、
部分テンプレート側も変更しなければいけなくなってしまう。
これでは、簡単にするために作っているファイルなのに、逆に複雑化してしまう。❌
部分テンプレートが呼び出されたときに、Viewから渡される変数が使えるように変更しよう
まず部分テンプレートに記載してあるインスタンス変数部分を、
@ を外して、ローカル変数に変更する。
=> こうすることで、この部分テンプレートファイルは、読み込まれなくなりますね。
=> そこで、この部分テンプレートにまとめた元のファイルに
上部で記述した "コードの記述方法"のやり方で読み込まれるようにrenderで定義する.
もう一度ここに、わかりやすく日本語にした基本型を書きます。
<%= render :呼び出すファイル名 , 呼び出すファイル内で用いる変数 : 渡す値 %>
と言うことです!以上!
すごく感じることを最後に書きたいと思う。
私の相方はエンジニアで色々聞くが、
わかんなくて聞くと、いつも英語で帰ってくる。
今日で言うと、 "partial"とか、"template"とか。(そして私は停止する。😓)
エンジニアはみんなそうなのか、日本人ではないからなのかは不明だが…。
今は日本語の教材しか読まないからいいが、これから読むドキュメントとかは英語が多い。
読めるようになるためにも、全部英語も覚えていく必要性は高いなと、感じている。
現場に出て、なお学び成長し続ける、を考えると必要なスキルだね。
拗ねずに、勉強します。笑
Discussion