⭐️タイトルを動的に出力する

・動的に出力とは?

「状況に合わせて選択できたりする柔軟性」

🟢実装方法

1 . app/views/layouts/application.html.erbのheadタグ内にyield文を記載。

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

2 . app/helpers/application_helper.rbでpege_titleメソッドを定義。

Image from Gyazo

page_titleの引数にはデフォルト値として空文字を指定。 これにより引数が渡されなかったとしても空文字(””)がpage_titleに代入され、メソッド内の演算で使用される。

そして、三項演算子によって、引数が渡されていなければ「RUNTEQ BORAD APP(base_title)」、引数が渡されていれば「引数の文字(page_title) |RUNTEQ BORAD APP」を返す。

三項演算子によって、if文の

if page_title.empty?
  base_title
else
  page_title + " | " + base_title
end

page_title.empty? ? base_title : page_title + " | " + base_title

このように一行で記載できる。

3 . あとはそれぞれのビューで、

<% content_for(:title, '渡したい文字列') %>
上記を記載するだけ! これにより、'渡したい文字列'が共通レイアウトのページにあるyeildに渡され、page_titleメソッドの引数が'渡したい文字列'となり、成果物のようにタイトルが「「Access | AAA 電機」(ページ内容|渡したい文字列 )」などとなる。

☀️動的であるメリット

タイトルを変更する際、タイトル新しく変更しなければなりません。

"ヘルパーメソッドのbase_titleに入れる文字を変える"だけで、content_forが使われる他の全ページのタイトルを変えられる。

app/helpers/application_helper.rb

module ApplicationHelper

  def page_title(page_title = '')
    # 変更箇所 -----------
    base_title = 'BBB 電機'
    # --------------------

    page_title.empty? ? base_title : page_title + " | " + base_title
  end
end