content_forの挙動

2010年9月13日

Rails 3 になってから、content_forの挙動が少し変わった。

Rails 2までの動きだと

という感じでタイトルを各ビューごとに変更するような作りの場合

レイアウトのhtml.erbでは、

とやると、各ビューの方でcontent_for指定しなかった場合にyield(:title)がnilになるので「デフォルトのトップページ」というタイトルになるのだが

Rails 3 では、ここでyield(:title)の結果が空文字で返されるため、タイトルが設定されなくなる。

yield(:title)をnilチェックする処理を書けば問題無いが、Rails 3には、content_forを判定するメソッドが出来てるのでそれを使う。

アンケート