😺

[Rails]部分テンプレート(render partial)について解説

2023/01/15に公開

部分テンプレート(render partial)とは

部分テンプレート  英語で"render partial"
英単語直訳
render : 〔人・物を~の〕状態にする,与える,提供する,提出する
partial : 部分的な、一部の、一部分の

複数のページで共通して利用できるViewファイルのことを、
部分テンプレート(render partial)という。
=> View内で共通パーツ、繰り返し処理をするパーツは部分テンプレートを使う。

<部分テンプレートを使用するメリット>
一言で言うと 可読性と汎用性の向上 になるから!

  • 記述するコードの量が減って、見やすいコードになる。
  • 同じ記述を何度も書く必要がない。
  • 修正が必要な場合、修正の対象箇所を減らせる。
  • ファイルサイズを小さくできる(重複記述が減るから)。

部分テンプレート作成方法

  1. 共通化できる部分を探す
  2. 部分テンプレートファイルを作成
  3. 共通化するコードを切り取る
  4. 部分テンプレートファイルに共通化部分を記述する
  5. 部分テンプレート用にコードを書き換える
    => インスタンス変数をローカル変数に。
  6. 部分テンプレートファイルを呼び出す

記述方法

<ファイル名 規則>
ファイル名の先頭に、アンダースコア(_)付きのファイルにすること。
(Rubyはこれで、部分テンプレートファイルとして認識)

<コードの記述方法>

これは上部で記述した作成手順の、"6"に当たるところ。
部分テンプレートの元にしたファイルに以下のように記述。
日本語でわかりやすくすると、このようになる。

<%= render :呼び出すファイル名 , 呼び出すファイル内で用いる変数 : 渡す値 %>

"なぜこの形なのか"を含めて,注意点含めて、以下からわかりやすく解説します。

注意点1:部分テンプレート内でインスタンス変数は基本使用しない

理由は、
部分テンプレートの再利用性が低くなる(依存度が高くなってしまう)ため。
もっと簡単にいうと、
controller側でインスタンス変数の名前や挙動を変更したとき、
部分テンプレート側も変更しなければいけなくなってしまう。

これでは、簡単にするために作っているファイルなのに、逆に複雑化してしまう。❌

部分テンプレートが呼び出されたときに、Viewから渡される変数が使えるように変更しよう

まず部分テンプレートに記載してあるインスタンス変数部分を、
@ を外して、ローカル変数に変更する。

=> こうすることで、この部分テンプレートファイルは、読み込まれなくなりますね。

=> そこで、この部分テンプレートにまとめた元のファイルに
 上部で記述した "コードの記述方法"のやり方で読み込まれるようにrenderで定義する.

もう一度ここに、わかりやすく日本語にした基本型を書きます。

<%= render :呼び出すファイル名 , 呼び出すファイル内で用いる変数 : 渡す値 %>

と言うことです!以上!


すごく感じることを最後に書きたいと思う。

私の相方はエンジニアで色々聞くが、
わかんなくて聞くと、いつも英語で帰ってくる。
今日で言うと、 "partial"とか、"template"とか。(そして私は停止する。😓)
エンジニアはみんなそうなのか、日本人ではないからなのかは不明だが…。

今は日本語の教材しか読まないからいいが、これから読むドキュメントとかは英語が多い。
読めるようになるためにも、全部英語も覚えていく必要性は高いなと、感じている。

現場に出て、なお学び成長し続ける、を考えると必要なスキルだね。

拗ねずに、勉強します。笑

Discussion