content_forを使ってページごとにページのタイトルを変更する
①application.html.erb
に各ページのタイトルを受け取れるよう、yieldを記述します
<title><%= full_title(yield(:title)) %></title>
②application.html.erb
のfull_titleメソッドが使えるよう、ヘルパーで定義します
module ApplicationHelper def full_title(page_title = '') base_title = 'タイトル' if page_title.empty? base_title else page_title + ' | ' + base_title end end end
↓のように短く記述することも可能です(三項演算子)
module ApplicationHelper def full_title(page_title = '') base_title = '技術ブログ' page_title.empty? ? base_title : page_title + " | " + base_title end
③各ページのviewでcontent_for
を使ってそのページにアクセスした時に表示させたいタイトルを記述します
<% content_for(:title, '登録ページ') %>
上記のようにした場合、app/views/users/new
ページにアクセスするとタイトル部分が登録ページ | 技術ブログ
と表示されます