カスタムヘルパーを使って、タイトルを動的に出力する
ページごとにタイトルを変化させて出力したい
タイトルとは、ブラウザのタブ部分に表示されるここのこと↓
「掲示板作成 | 固定タイトル」のように、左側部分だけページごとに出力を変えたい
トップページは、「○○作成」などといったタイトルがないため、「|」は不要で、固定タイトルだけ表示させたい
今回の実装の流れ
新しくメソッドを作成する。カスタムヘルパーと呼ばれる。
ビュー側に設定を追記していく。
カスタムヘルパーを作成する
module ApplicationHelper # ページごとの完全なタイトルを返す def page_title(page_title = '') base_title = 'Ruby on Rails 学習記録' if page_title.empty? base_title else page_title + ' | ' + base_title end end end
こちらのほうがスマート↓↓
def page_title(page_title = '') base_title = 'Ruby on Rails 学習記録' page_title.empty? ? base_title : page_title + " | " + base_title end
条件演算子で、
式? 真だった場合の処理:偽だった場合の処理
となるので、
empty?
メソッド + 式? 真だった場合の処理:偽だった場合の処理
で?
が2つ並んでいる。
作成したヘルパーを使って、Webサイト全体のレイアウト
<title><%= page_title(yield(:title)) %></title>
各ページに埋め込んでいく
前提として、事前に翻訳を登録している。(i18n)
users: new: title: 'ユーザー登録'
各ファイルの頭に、このようにcontent
for`を埋め込んでいく。
<%= content_for(:title, t('.title')) %>
掲示板詳細画面は、タイトルに閲覧している掲示板名を表示したいので、@board.title
<% content_for(:title, @board.title) %>
yieldメソッド
ビューを挿入すべき場所を指定するのに使用する
content_forメソッド
コンテンツを名前付きのyieldブロックとしてレイアウトに挿入できる