Railsチュートリアルの第4章を勉強しています。
前回、レイアウトで次のように動的に変更できるタイトル表示について確認しました。
Ruby on Rails Tutorial Sample App | <%= yield(:title) %>
このとき、もしページ側でタイトルの値を用意しなかった場合、末尾に余分な縦棒 | が残ってしまいます。
Ruby on Rails Tutorial Sample App |
このような問題はヘルパー関数を作成することで回避できるとのことです。
ページタイトルが定義されていない場合は基本タイトル “Ruby on Rails Tutorial Sample App”を返し、定義されている場合は基本タイトルに縦棒と追加ページタイトルを追加して返してくれるヘルパーを作ってみます。
ヘルパーをつくったらレイアウトのタイトルタグを次のように変更します。
<title><%= full_title(yield(:title)) %></title>
これでページ側の値の有無でタイトル表示を切り替えることができます。
ページ側タイトル指定あり
タイトルに値を指定した場合は、| の後に指定した値が表示されます。
ページ側タイトル指定なし
タイトルに値を指定しなかった場合は、 | が表示されなくなりました。
ヘルパー関数はappフォルダのhelpersフォルダ内にあるapplication_helper.rbファイルに処理を書けばいいみたいです。
追記
ヘルパーで出てきたモジュールとは、関連したメソッドをまとめる方法の1つで、Rubyのクラスにincludeを使うことでミックスイン (mixed in)することができます。
モジュールを書いてはこれを明示的にインクルードするという作業を頻繁に行いますが、このヘルパーモジュールの場合はRailsが自動的にインクルードしてくれます。
インクルードを宣言しなくても自動ですべてのビューで利用できます。