プログラミング初心者の備忘録です。
間違った部分がありましたらご指摘いただけると幸いです。
やりたいこと
Railsでviewで表示されるtitleタグの内容をページ毎に切り替えたい。
環境
macOS
rails 6.1ver
1.共通レイアウトの編集
layouts/application.html.erbに下記のコードを記述する。
application.html.erb
<html>
<head>
<title><%= content_for?(:title) ? yield(:title) : "デフォルトタイトル" %></title>
</head>
</html>
yieldメソッド ・・・ 個別レイアウトのビューコンテンツを挿入する位置を指定できる。
content_forメソッド ・・・ レイアウト内の名前のついたyieldブロックの位置にコンテンツを挿入する事ができる。上記コードでいう名前とは :title の部分を指す。
タイトルをつけていない個別レイアウトには :"デフォルトタイトル" の部分が反映されるコードになっている。
2.個別レイアウトの編集
個別レイアウトのファイルに下記のコードを記述する。今回はindex.html.erbとする。
index.html.erb
<%= content_for :title do %>
Qiita記事一覧
<% end >
content_for ~ endで囲んだ内容が :title に代入される。
このレンダリング結果がレイアウトに挿入されると、下記のHTML記述になる。
<html>
<head>
<title>Qiita記事一覧</title>
</head>
</html>
参照サイト
https://materializer.co/lab/blog/41
https://railsguides.jp/layouts_and_rendering.html