【Rails】renderのパーシャルファイルにデータを渡す

【Rails】renderのパーシャルファイルにデータを渡す

RailsのViewでは、繰り返し出現するHTMLは使い回しができるようにパーシャルファイルとして別ファイルにすることができます。

_post.html.erb

<article class="post">
  <header class="post-title">...</header>
  <div class="post-body">...</div>
  <footer class="post-footer">...</footer>
</article>

パーシャルファイルの読み込みはViewの render メソッドで呼び出します。

= render partial: 'post'

データを渡すためのlocalsオプション

多くの場合、パーシャルファイルは様々なViewから呼び出されるので、呼び出し元からデータを渡せば柔軟なパーツにすることができます。

そこでデータを渡すには、 render メソッドの locals オプションを利用します。

= render partial: 'post', locals: { posts: @posts }

locals オプションにはオブジェクトを渡します。
オブジェクトのキー名がパーシャル内で参照できる値になります。

<article class="post">
  <header class="post-title"><%= @post.title %></header>
  <div class="post-body"><%= @post.content %></div>
  <footer class="post-footer"><%= @post.meta %></footer>
</article>

ちなみにlocals オプションだけ指定する場合、次のように省略形で記述することも可能です。

= render "article", post: @post
五十川 洋平(Yohei Isokawa)

五十川 洋平(Yohei Isokawa)

フロントエンドエンジニア/面白法人カヤックなどのWeb制作会社に勤務したのち、故郷の新潟に戻り独立。JSフレームワークAngularやFirebase、Google Cloud Platformを使ったWebアプリ開発が得意。 また、Udemyのプログラミング解説の講師、writer.appの自主開発や上越TechMeetupの主催などを行っています。

プロフィール

©Copyright 2022 Yohei Isokawa All Rights Reserved.