タイトルを動的に出力したいのでyieldメソッドとcontent_forメソッドをうまく利用する。
content_forメソッドを使うことでヘルパーメソッドが利用できるので、動的にタイトルを出力することができる。
まずは簡単にyieldメソッドとcontent_forメソッドの使い方を説明していく。
content_for
content_forは表示したいコンテンツを設定するのが役割。
content_forの公式
<%= content_for :コンテンツ名 do %>
コンテンツ
<% end %>
具体例を用いて説明していく。
<%= content_for :title do %>
トップページ
<% end %>
コンテンツ名を:titleとした。そしてコンテンツはトップページとする。
content_forでは表示したいコンテンツをdo~endで囲む。
ここでいうコンテンツはページのタイトルとして表示したい文字列を設定。
yield
yieldの公式
yield(:コンテンツ名)
今回は上記で設定したトップページという文字列を表示したいので、
yield(:title)
とする。このようにcontent_for(:コンテンツ名)で表示したいコンテンツを設定しておき、yield(:コンテンツ名)で設定したコンテンツを出力することができる。
これを利用してタイトルを動的に呼び出していく。
実践
今回はユーザー登録ページと、トップページで異なるタイトルを出力していく。
1、content_forメソッドで設定する。
<% content_for :title do %>
page_title("トップ")
<% end %>
<% content_for :title do %>
page_title("ユーザー登録")
<% end %>
今回は異なるタイトルを効率よく出力したいのでhelperメソッドを利用する。
2、ヘルパーメソッドを定義
module ApplicationHelper
def page_title(title)
title + "ページ"
end
end
3、実際に出力する。
<title><%= yield(:title) %></title>
以上で完成。