titleとh1要素をすっきり書く

Railscasts - Pretty Page Title
viewに1行書くだけで、タイトルとh1要素を同じように出力できる。
なるほどねと思ったのでメモ。


まぁ、Four Days on Railsみたいに
@(インスタンス)変数で記述する方法でもシンプルでいいんだけど
作者曰く、よりcleanになると。

出力結果

こんな感じ
  <title>TestPage - Listing products</title>
  <h1>Listing products</h1>

書き方

各view

title/h1要素の代わりに下記のように記載。

<% title "タイトルh1要素名" %>
layout

application.html.erbを作成(scaffoldで作成されたerbをコピー)。
titleとh1を下記のように編集。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>TestPage - <%= yield(:title) || "This is TestPage" %></title>
  <%= stylesheet_link_tag 'pagination' %>
</head>
<body>

<p style="color: green"><%= flash[:notice] %></p>
<h1><%= yield(:title) %></h1>
<%= yield %>

</body>
</html>
application_helper.rb

viewで使うtitleメソッドを作成

  def title(page_title)
    content_for(:title) { page_title }
  end