Rails content_for タイトル表示を動的に.
ApplicationHelperへ定義
はじめにApplicationHelperに以下のように定義します.
module ApplicationHelper
def page_title(page_title = '')
base_title = '投稿APP'
page_title.empty? ? base_title : page_title + ' | ' + base_title
end
end
ちなみに...
page_title.empty? ? base_title : page_title + ' | ' + base_title
(注)三項演算子とは.
このコードは三項演算子というものを使用しています.
if 条件
式1
else
式2
end
というようなif文を以下のようにコードを書くことができます.
条件 ? 式1 : 式2
先程のコードを通常のif文に置き換えると以下のようになる.
if page_title.empty?
base_title
else
page_title + " | " + base_title
end
三項演算子を使用することでスッキリと1行で書くことができるというわけです.
page_title.empty? ? base_title : page_title + ' | ' + base_title
定義したメソッドを使用する.
application.html.erb
<head>
<title><%= page_title(yield(:title)) %></title> # ここ
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>
</head>
content_forを使用する.
content_for とは.
HTMLをレンダリングする方法に関する情報を関連するビューテンプレート内に保持できる.
以下の記述で動的に表示することができる.
posts/show.html.erb
<% content_for(:title, @post.title) %>
この記事が気に入ったらサポートをしてみませんか?