shou.com
JP / EN

rails、動的にタイトルを変える方法

Fri Apr 5, 2019
Sat Apr 20, 2024

環境

  • macOS Mojave 10.14.4
  • Rails 5.2.2
  • ruby 2.6.1

やりたいこと

動的にタイトルを変えたい

よくある動的にタイトルを変える方法。トップ画面に偏移したらドメイン名オンリー。ログイン画面に偏移したらlogin/ドメイン名みたいな形にしたい。

Railsチュートリアルに詳しい解説があるので、しっかり学習したい人はそちらをどうぞ。

application.html.erbに直接書いても問題ないですが、あとあと微調整が必要になってくるのでhelperを使ってタイトルを定義します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# app/helpers/application_helper.rb
module ApplicationHelper
  # ページごとの完全なタイトルを返す
  def full_title(page_title = '')
    base_title = "shou2017.com"
    if page_title.empty?
      base_title
    else
      page_title + " | " + base_title
    end
  end
end

あとは、full_titleヘルパーをapplication.html.erbで使えるようにします。

1
2
3
4
5
<!-- app/views/layouts/application.html.erb -->
<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>

個別のページタイトルをprovideをつかって伝える。

1
2
<% provide(:title,  " Login") %>
<h1>Login</h1>
See Also