サイトのタイトルを動的に表示させる

サイトのタイトルを各ページ毎に変えたいときの手順です。

・ヘルパーの作成

・共通レイアウトに埋め込み

・各viewページで呼び出し

の流れでやっていきます。

ヘルパーの作成

module ApplicationHelper
  def page_title(page_title = '')
    base_title = 'hogehoge'
    if page_title.empty?
      base_title
    else
      page_title + ' | ' + base_title
    end
 # page_title.empty? ? base_title : page_title + " | " + base_title
 # 条件式 ? trueの処理 : falseの処理
 #三項演算子で書くとこう。コード量を減らすためよく使われる。
  end
end

共通レイアウトに埋め込み

<html>
  <head>
    <title><%= page_title(yield(:title)) %></title>

各viewページで呼び出し

<% content_for :title, 'fuga' %>

これで各viewページのcontent_forで与えた文字列をpage_titleメソッドに渡して

fuga | hogehoge

というタイトルを付けることができる。