紅孔雀 このページをアンテナに追加 RSSフィード

2009-11-03 ページごとに <title> の値を変更する方法

[] ページごとに <title> の値を変更する方法(content_for を使用する)

content_for を使用する

ページごとに <title> の値を変更するには content_for メソッドを使用することができます。

例として以下の構成を考えます。

  • app/views/layout/default.html.erb(レイアウト用のファイル)
  • app/views/users/index.html(ユーザ一覧ページ)
  • ...(他のページ)

この場合、app/views/layout/default.html.erb(レイアウト用のファイル)の内容は以下のようになります。

<!-- app/views/layouts/default.html.erb -->

<html>
<head>
<!-- この部分に「content_for :title」の内容が挿入される -->
<title><%= yield :title %></title>
</head>
<body>
<%= yield %>
</body>

そして、app/views/users/index.html(ユーザ一覧ページ)の内容は以下のようになります。

<!-- app/views/users/index.html -->

<!-- default.html.erb の <%= yield :title %> の部分に挿入される -->
<% content_for :title do %>
ユーザ一覧
<% end %>

<!-- 以下、default.html.erb の <%= yield %> の部分に挿入される -->
...

結果として、以下のような HTML が生成されます。

<html>
<head>
<title>ユーザ一覧</title>
</head>
<body>
...
</body>

同様に、他のページにも「content_for :title」を追加すれば、ページごとに <title> の値を変更することができます。

content_for を使用する方法の問題点

content_for を使用する方法でやりたいことは実現できるのですが、以下の点に不満が残ります。

  • ページのタイトル文字列が個々の View ファイルに分散してしまう。
  • 個々の View ファイルで「content_for :title」を忘れた場合に気付きにくい(「yield :title」の部分が空白になるだけ)。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/benikujyaku/20091103/1257230972