LoginSignup
0
0

More than 1 year has passed since last update.

renderで部分テンプレートを呼び出す方法

Posted at

はじめに

 この記事はプログラミング学習の備忘録です。今回はrenderを使って指定のビューファイルを呼び出す方法についてまとめます。

viewでrenderメソッドを使う

 まずviewでよく使われるrenderメソッドの用法は、部分テンプレートを呼び出す時です。部分テンプレートとは複数のviewファイルで使われるコードを切り出して、共通化するファイルのことです。
renderで部分テンプレートを呼び出すためには、まずは共通部分をまとめた部分テンプレートファイルを作ります。
この時に気をつけることは、ファイル名の先頭にアンダーバーをつけて
「_tweet.html.erb」のような形にすることです。

次に部分テンプレートを呼び出します。呼び出し方は主に、
①部分テンプレートをそのまま呼び出す場合
②変数を渡す場合
の2つがあります。順番に説明します。 

部分テンプレートをそのまま呼び出す

例えばformを作る部分テンプレートには変数を渡さず、そのまま呼び出されます。
まずは「_form.html.erb」というファイルを作り、

new.html.erb
 <%= render "form"%>

と記述します。そうすることで、newとeditのviewで共通のフォームをそのまま使えます

部分テンプレートに変数を渡す

次に変数を渡す場合についてまとめます。
例えばtwitterの一つ一つの投稿は、変数が違う共通のコードを使います。
そのような時には、部分テンプレートに変数を渡す必要があります。
以下のように記述します。

tweet.html.erb
 <% @tweets.each do |tweet|%>
  <%= render partial: ‘tweet’, locals: { tweet: tweet } %>
 <% end %>

‘部分テンプレート名’, locals: { 部分テンプレートで使いたい変数名: 渡したい変数 }
とすることで変数を部分テンプレートに渡します。

またこの記述はcollectionオプションを使って簡略化することもできます。

tweet.html.erb
<%= render partial: 'tweet', collection:  @tweets %>

まず最初の'tweet'では、①呼び出す部分テンプレート名と、②部分テンプレートで使いたい変数名の2つの意味があります

そしてcollectionの後では、@tweetsの中身分、部分テンプレートを呼び出します。

このようにcollectionオプションを使うことにより、より簡略化して記述することができます。

まとめ

 今回はrenderで部分テンプレートを渡す方法についてまとめました。
部分テンプレートを使うことで、見やすくなり、ミスの少ないコードを書けます。
今回の記事が少しでもお役に立てれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0