1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsでの動的タイトル表示を実装した

Last updated at Posted at 2019-09-12

どうも、Rails学習2ヶ月とちょっとのChihaと申します。
タイトルの通りです。スクールでのチーム開発にて触る機会があったので備忘録。

開発環境

  • Ruby on Rails 5.2.2
  • Ruby 2.5.1
  • haml-rails

動的タイトル表示とは?

そもそもの話、ここで言うタイトルとはブラウザのタブの所に表示される文字のことです。
それを、
スクリーンショット 2019-09-12 21.44.37.png
スクリーンショット 2019-09-12 21.52.31.png
こう言う感じで、ページの目的によって表示を変えるやつを実装しました。

ブラウザのタイトルは、views/layouts/application.html.erb(僕の環境ではapplication.html.haml)に書かれたhead内のtitleタグの中身を参照して表示されます。

!!!
%html
  %head
    %meta{content:  "text/html; charset=UTF-8", "http-equiv": "Content-Type"}/
    %title FreemarketSample58a

こんな感じです。
スクリーンショット 2019-09-12 21.50.27.png

このtitleタグの中身は

$ rails new アプリケーション名

をした時のタイトルがそのまま書かれてます。
このままだと全てのページがFreemarketSample58aというタイトルになってしまいます。

そこで、全ページ同じ表記だと味気無いので変更しようと思ったわけです。
(というか作成してるアプリの見本が動的タイトル表示だった)
今回はcontent_forを使って実装しました。
(ほとんどこちらの記事そのままです。)
https://techracho.bpsinc.jp/hachi8833/2018_05_15/55812

/application.html.haml(または何かしらのレイアウトファイル)
!!!
%html
  %head
    %meta{content: "text/html; charset=UTF-8", "http-equiv": "Content-Type"}/
    %title 
      = content_for?(:html_title) ? yield(:html_title) : "FreemarketSample58a" 

今回はcontent_forで:html_titleが飛んできていた場合、そのまま表示させてあげる設定にしました。

ビューファイルには、適当な場所に

/show.html.haml(何らかのビューファイル)
- content_for(:html_title) {'表示させたい内容'}

としてあげると表示できます。僕は他の記述と混ざらないように1行目に置きました。
最初はタイトルの数だけレイアウト置くなどというトンデモコーディングしてました。流石にメンターに注意されました。反省。

ということで、これで無事に動的タイトル表示が実装できました。

最後に

引き続き細々と記事書ける気力があった時に書いていこうかなと思います。
まだまだ学習2ヶ月ほどのド初心者ですので、より良いコード、間違った点などがあればご教授頂けると幸いです。

参考記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?