りゅうじの学習blog

学習したことをアウトプットしていきます。

content_for と yield でページタイトルを動的に表示

こんにちは。りゅうじです。

content_foryield でページタイトルを動的に表示させます。

ページタイトルとはウインドウの上部のここです。

実装

#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') %>

流れ

  1. 'AAA'yield に渡される
  2. page_titleの引数が'Blog'になる
  3. ページタイトルが AAA | Blogとなる
    1. で何も渡さなければ Blog だけ表示される

最後に

読んでいただいた方、ありがとうございました。