Railsのパーシャル活用術!render partial・collection・localsでビューを効率化しよう
生徒
「Railsのビューで、同じHTMLを何度も書くのが大変なんですけど…」
先生
「そんなときは、パーシャルという仕組みを使えば、共通部分を使い回すことができますよ。」
生徒
「パーシャルってどうやって使うんですか?renderとかlocalsってよく見かけますが…」
先生
「では、パーシャルの使い方を一緒に学んでいきましょう!」
1. パーシャルとは?
パーシャル(partial)とは、ビューの一部分を切り出して、再利用可能にする機能です。共通する見た目や繰り返し表示する部分を分けておくことで、コードがすっきりし、メンテナンスも簡単になります。
たとえば「商品情報の表示」や「ユーザー情報のカード」など、複数の場所で同じ見た目が必要なときに役立ちます。
2. パーシャルの作成と命名ルール
パーシャルは、通常のERBファイルと同じように作りますが、ファイル名の先頭に「_(アンダースコア)」をつけるという決まりがあります。
例えば、商品カードのパーシャルを作るなら:
app/views/products/_product.html.erb
このように作っておけば、renderで呼び出すことができます。
3. 基本のrenderの使い方
作ったパーシャルを呼び出すには、renderメソッドを使います。以下のように書くだけで表示されます:
<%= render partial: "product", locals: { product: @product } %>
partial:にはファイル名(先頭の「_」は省略)、locals:では、渡したい変数を指定します。
4. localsで値を渡す方法
localsを使うことで、パーシャルに値を渡して中で使うことができます。
<!-- _product.html.erb -->
<div class="card">
<h3><%= product.name %></h3>
<p><%= product.description %></p>
</div>
このように、呼び出し元でlocalsにproduct: @productを渡せば、パーシャル内でproductという変数が使えるようになります。
5. 繰り返し表示に便利なcollectionオプション
複数の商品を一覧で表示したいとき、毎回render partial: ...を繰り返すのは大変です。そんなときはcollectionオプションを使えば、配列の要素ごとにパーシャルを自動で呼び出してくれます。
<%= render partial: "product", collection: @products %>
このように書くだけで、@productsの中の各要素を使って、_product.html.erbが繰り返し呼び出されます。
このとき、パーシャル内で使う変数名は「product」になります(ファイル名の単数形が自動で使われます)。
6. asオプションで変数名を自由に変更
collectionを使うとき、変数名を変えたいときはasオプションが使えます。
<%= render partial: "product", collection: @products, as: :item %>
このようにすれば、_product.html.erb内ではitemという変数でデータにアクセスできます。
7. current_userなどの変数も渡せる
パーシャルに渡せるのはモデルのデータだけではありません。現在ログイン中のユーザー情報(current_user)や、フラグ、条件分岐のための値なども渡すことができます。
<%= render partial: "product", locals: { product: product, current_user: current_user } %>
これにより、current_user.admin?のような条件で表示を切り替えることも可能になります。
8. render "ディレクトリ/ファイル名" だけでもOK
render partial:やlocals:は省略することもできます。よく使う簡略記法は次のようになります:
<%= render "products/product", product: @product %>
ファイル名の指定と変数の渡し方がシンプルになって、読みやすさがアップします。短いコードで書けるので、日常的に使われる書き方です。
9. 部品化で保守性アップ!パーシャルのメリット
パーシャルを使うと、Railsのビューがとても見やすくなり、修正もしやすくなります。
- 繰り返し部分を1ファイルにまとめて再利用できる
- レイアウトの統一感が保たれる
- エラー箇所を素早く特定できる
初心者のうちから「この部分は何度も出てくるな」と感じたら、積極的にパーシャルに切り出していく癖をつけると、自然と設計力が身につきます。