#はじめに
この記事はプログラミング学習の備忘録です。今回はrenderを使って指定のビューファイルを呼び出す方法についてまとめます。
#viewでrenderメソッドを使う
まずviewでよく使われるrenderメソッドの用法は、部分テンプレートを呼び出す時です。部分テンプレートとは複数のviewファイルで使われるコードを切り出して、共通化するファイルのことです。
renderで部分テンプレートを呼び出すためには、まずは共通部分をまとめた部分テンプレートファイルを作ります。
この時に気をつけることは、ファイル名の先頭にアンダーバーをつけて
**「_tweet.html.erb」**のような形にすることです。
次に部分テンプレートを呼び出します。呼び出し方は主に、
①部分テンプレートをそのまま呼び出す場合
②変数を渡す場合
の2つがあります。順番に説明します。
#部分テンプレートをそのまま呼び出す
例えばformを作る部分テンプレートには変数を渡さず、そのまま呼び出されます。
まずは「_form.html.erb」というファイルを作り、
<%= render "form"%>
と記述します。そうすることで、newとeditのviewで共通のフォームをそのまま使えます
#部分テンプレートに変数を渡す
次に変数を渡す場合についてまとめます。
例えばtwitterの一つ一つの投稿は、変数が違う共通のコードを使います。
そのような時には、部分テンプレートに変数を渡す必要があります。
以下のように記述します。
<% @tweets.each do |tweet|%>
<%= render partial: ‘tweet’, locals: { tweet: tweet } %>
<% end %>
‘部分テンプレート名’, locals: { 部分テンプレートで使いたい変数名: 渡したい変数 }
とすることで変数を部分テンプレートに渡します。
またこの記述はcollectionオプションを使って簡略化することもできます。
<%= render partial: 'tweet', collection: @tweets %>
まず最初の'tweet'では、①呼び出す部分テンプレート名と、②部分テンプレートで使いたい変数名の2つの意味があります
そしてcollectionの後では、@tweetsの中身分、部分テンプレートを呼び出します。
このようにcollectionオプションを使うことにより、より簡略化して記述することができます。
#まとめ
今回はrenderで部分テンプレートを渡す方法についてまとめました。
部分テンプレートを使うことで、見やすくなり、ミスの少ないコードを書けます。
今回の記事が少しでもお役に立てれば幸いです。