見出し画像

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) %>

この記事が参加している募集

スキしてみて

この記事が気に入ったらサポートをしてみませんか?