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'になります。