render メソッド

renderメソッドは、部分テンプレートを呼び出す際に利用するメソッド

 partial オプション

renderメソッドで使用できるオプション。 partialというオプションを付けることで、明示的に部分テンプレート名を指定し、部分テンプレートを表示することができます。
下の例では、_sample.html.erbという部分テンプレートを呼び出しています。

【例】

<% render partial: "sample" %>

 

 locals オプション

renderメソッドで使用できるオプションです。 localsというオプションを付けることで、部分テンプレート内でその変数を使えるようになります。

【例】

<% render partial: "sample", locals: { post: "hello!" } %>

えっ

 

これで部分テンプレート内においてhello!という文字列の代入されたpostという変数が使えるようになります。

では、renderメソッドを利用して_post.html.erbを呼び出す

index.html.erbを以下のように編集

app/views/posts/index.html.erb

<% @posts.each do |post| %>

  <%= render partial: "post", locals: { post: post } %>

<% end %>

 

部分テンプレートを使うメリット2こ

・繰り返し書くコードを一回で済ます

・修正するときに修正箇所が少なく済む