content_for と yield でページタイトルを動的に表示
こんにちは。りゅうじです。
content_for
と yield
でページタイトルを動的に表示させます。
ページタイトルとはウインドウの上部のここです。
実装
#application.html.erb
<title><%= page_title(yield(:title)) %></title>
ここの page_title
は helper で定義したものから呼び出しています。
#application_helper.rb
module ApplicationHelper
def page_title(page_title = '')
base_title = 'Blog'
page_title.empty? ? base_title : page_title + " | " + base_title
end
page_title
の引数は空文字がデフォルトにしてます。(引数が渡されなかった場合、空文字がpage_title
に代入される)
三項演算子に関しては過去記事で解説しているのでよろしければ。
https://ryujisurf55.hatenablog.com/entry/2021/04/26/140432
そしてcontent_for
の出番です。
# 表示したいviewファイルにて
<% content_for(:title, 'AAA') %>
流れ
'AAA'
がyield
に渡されるpage_title
の引数が'Blog'になる- ページタイトルが AAA | Blogとなる
-
- で何も渡さなければ Blog だけ表示される
最後に
読んでいただいた方、ありがとうございました。