81
47

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 】content_forとyieldの使い方

Last updated at Posted at 2019-07-12

#はじめに
今回はRailsにおけるcontent_foryieldの使い方について解説します!
コンテンツを1箇所に保存し、他のビューで使えるようにするためのものです!
ぜひご覧ください:woman_tone1:

#使い方
content_forを説明する前に…
まず例として、titleを各ページで変更しない場合について確認します。以下のようにapplication.htmlに書けば良いですね。

application.html
<title>タイトルだよ</title>

そうすると以下のようにタイトルが表示されるはずです。
この場合はapplication.htmlに書いてあるのでどのページでもタイトルが"タイトルだよ"と表示されます。
image.png

しかし、作成するサイトによっては、各ページごとにタイトルを変えたい場合がありますよね。
例えば映画のレビューサイトを作成するとしたら、トップページのタイトルには"サイト名"をつけて、
各映画の詳細ページのサイトにはそれぞれの映画の名前を入れたサイト名をつける、等。

そういった場合application.htmlとそれぞれのhtmlファイルに以下のように記載します。

application.html
<title><%= yield(:title) %></title>
test.html
<% content_for(:title, 'てすと') %>

このように書くことで、test.htmlがブラウザに表示された際にタイトルが"てすと"に変わります。

そしてデフォルト値を設定することもできます!その場合は以下のようにします。

application.html
<title><%= content_for?(:title) ? yield(:title) : でふぉると"%></title>

この例だと、content_forでtitleが設定されていないhtmlファイルの場合は、タイトルが"でふぉると"と表示されます。

また、複数行にわたるような内容をcontent_forを使用して表示させる場合には、以下のようにします。

application.html
<%= yield(:infomation) %>
test.html
<% content_for :information do %>
    <ul>
        <li>最新のお知らせ</li>
    </ul>
<% end %>

このようにcontent_forをdo-endで記述し、ブロック内に呼び出したい内容を記載すれば良いです。

#さいごに
contetn_forとyeildを使用することで特定の場所への記述がとてもわかりやすくなります。
ぜひ活用してみてください!
最後までご覧いただきありがとうございました:relaxed:

81
47
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
81
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?