⭐️タイトルを動的に出力する
・動的に出力とは?
「状況に合わせて選択できたりする柔軟性」
🟢実装方法
1 . app/views/layouts/application.html.erbのheadタグ内にyield文を記載。
<title><%= page_title(yield(:title)) %></title>
2 . app/helpers/application_helper.rbでpege_titleメソッドを定義。
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