おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Rails 3 でのtitleタグの書き方について

Rails 2 では、content_for(:title) が定義されていないときにviewで yield :title などとすると nilかfalseが戻ってきていたので、デフォルトのタイトルを定義したいような時は

<title><%= yield(:title) || "default title" %></title>

のように書けたのですが、Rails 3 では空文字が返ってくるようで上記の書き方だと"default title"は絶対に表示されなくなってしまいました。なので仕方なく

<title><%= t = yield(:title); t.blank? ? "default title" : t %></title>

のように書いていたのですがこれは少しひどいですね。

そこでcontent_for?ですよ

Rails 3 では、content_forが定義されているか否かチェックする content_for? メソッドが追加されました。これを使うと

<title><%= content_for?(:title) ? yield(:title) : "default title"%></title>

のように書くことが出来ます。これでかなりましな感じになりましたね。よかったよかった。