✨
部分テンプレート
今まで部分テンプレートの必要性があまり理解しきれていなかったので記載します。
正直、コードがスッキリする、だけの意識しかしていませんでした。
が、エラーの際、そこの記述は飛ばして、先の記述に行けることが良いメリットであると認識しました。
メリット:
-
文字がたくさん書いてあるコードがスッキリする
-
エラーを吐いた時に、そこの部分テンプレートの部分は飛ばせる
-
同じ記述を何度も書く必要がなくなる
デメリット:
- あまりにも多すぎると、いちいち内容を見に行くのが面倒
作成方法
部分テンプレートファイルを作成
ファイル名の先頭にアンダースコア(_)付きのファイルが、部分テンプレートファイルとして認識されます。
共通化するコードを切り取り、
部分テンプレートファイルに共通化の対象箇所を記述する。
例文だと、この形です。
_userinfo.html.erb
_の後ろのファイル名は自分がわかりやすいものにしたら良いです。
以下、例文です
<div>
<h2>User info</h2>
<%= image_tag user.get_profile_image(100,100) %>
<table>
<tr>
<td>name</td> <td><%= user.name %></td>
</tr>
<tr>
<td>introduction</td> <td><%= user.introduction %></td>
</tr>
</table>
<%= link_to edit_user_path(user.id), class: "btn btn-outline-secondary btn-block" do %>
<i class="fa-solid fa-user-gear"></i>
<% end %>
<h1>New book</h1>
<%= form_with model: book do |f| %>
<h4>Title</h4>
<%= f.text_field :title %>
<h4>Opinion</h4>
<%= f.text_area :body %>
<%= f.submit 'Create Book', class:"btn btn-success" %>
<% end %>
</div>
この記載をよく使う場合、
呼び出したいところで
<%= render partial: 'userinfo', locals: {user: @user, book: @book} %>
と記載します。{}の中の記載は、部分テンプレート化した、変数を記載します。
@userなら、user: @userという形です。
partialは記載しなくても、部分テンプレートとして、機能しますが、記載しておいた方が安全です。
なぜ、安全か、までは参考記事に記載してありますので、参考記事を参照してください。
以下、参考にさせていただいた記事
Discussion