1. 概要
Railsでページのタイトルを変更する方法としては、独自にヘルパーメソッドを追加する方法などがあるが、ここではtitleizer
というGemを使った方法を示す。
2. インストール
Gemfile
に以下を追加し、bundle install
する。
Gemfile
gem 'titleizer'
3. 使い方
基本的な使い方
1) タイトルを設定する
config/locales/*.yml
に、以下のようにタイトルを設定する(例えばtitle.ja.yml
)。
config/locales/title.ja.yml
ja:
title:
application: サンプルブログ
description: これはサンプルブログです
posts:
index: 記事一覧
show: "%{subject}"
new: 記事投稿
edit: 記事編集
:
2) タイトルタグを編集する
app/views/layouts/application.html.erb
のタイトルタグを次のように編集する。
app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= title(yield :title) %></title>
:
</head>
以上で、コントローラとアクションに応じたタイトルが自動でタイトルタグに設定される。
例えば、上記設定ではタイトルは以下のようになる。
パス | タイトル |
---|---|
root_path | これはサンプルブログです | サンプルブログ |
posts_path | 記事一覧 | サンプルブログ |
オプション
変数を使用する
例えばtitle.ja.yml
内の%{subject}
など、タイトルに変数を使用したい場合がある。
この場合、コントローラのアクション内で@title_params
に変数をセットできる。
app/controllers/posts_controller.rb
class PostsController < ApplicationController
def show
@post = Post.find(params[:id])
@title_params = { subject: @post.subject }
end
end
タイトルを上書きする
例えばエラーページなど、title.ja.yml
内で設定したタイトルとは違うタイトルを設定したい場合がある。
この場合、ビューでprovide :title
により上書きできる。
app/views/shared/_render_404.html.erb
<% provide :title, '404 Not Found' %>