<Ruby on Rails> content_forとyeildを使用したtitleの設定

titleの設定

1. ページタイトルを設定したいviewページの冒頭に以下を設定

contact_forで:titleに任意の語句を入れ、yield(:title)に渡す。

content_for(:title, ':titleに入れたい語句') 
# contact_forではなくprovideでも可

2. application_helperにpage_titleメソッドを設定

# application_helper.rb
def page_title(page_title = '') #page_titleの''内には引数で渡された語句が入る
    base_title = 'APP TITLE'
    # 三項演算子 → 条件1 ? 正しいとき : 正しくないとき
    page_title.empty? ? base_title : page_title + ' | ' + base_title
end

例えばページタイトルを設定したいviewに

content_for(:title, 'aaaa') 

と記載すると、以下のようなデータが渡される。

page_title
=> "aaaa"

そのため、page_title.empty?がfalseになり、後半のpage_title + ' | ' + base_titleが適応され、page_titleにはcontent_for→yeildで渡された'aaaa'が入る。

3. application_helperで設定したpage_titleメソッドを使用し、引数にcontact_forで設定した:titleを入れる。

# application.html.erb
<head>
  <title><%= page_title(yield(:title)) %></title>
  ...
</head>