content_forを使ってタイトルを動的に出力する【rails】

はじめに

railsアプリでcontent_forを使ってタイトルを動的に出力する方法について

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

まず、ヘルパーに下記のメソッドを定義します。

module ApplicationHelper
   def pages_title(page_title = '')
     base_title = 'BOARD APP'
 
     page_title.empty? ? base_title : page_title + ' | ' + base_title
   end
 end

page_titleを引数にとるメソッドをつくり、デフォルトでは空の状態にしておきます。

メソッド内では三項演算子を使っています。

<条件式> ? <trueの処理> : <falseの処理>

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

続いてビュー側の設定をします。

それぞれのビューでcontent_forを使ってタイトルを引数で渡し、

それをyieldで受け取ってから、先程定義したpages_titleメソッドを呼び出します。

# users/new.html.erb

<%= content_for(:title, 'ユーザー登録') %>

# ↓↓ yieldに渡す

# layouts/application.html.erb

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

↓↓

<title><%= pages_title('ユーザー登録') %></title>  # メソッドを呼び出す

# この場合ページのタイトルは'ユーザー登録 | BOARD APP'になります。