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

環境

  • macOS Mojave 10.14.4

  • Rails 5.2.2

  • ruby 2.6.1





やりたいこと

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

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

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

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

# app/helpers/application_helper.rb
module ApplicationHelper
  # ページごとの完全なタイトルを返す
  def full_title(page_title = '')
    base_title = "bokunonikki.net"
    if page_title.empty?
      base_title
    else
      page_title + " | " + base_title
    end
  end
end





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

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





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

<% provide(:title, " Login") %>
<h1>Login</h1>

See Also