0
0

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 1 year has passed since last update.

部分テンプレートにとlayoutについて

Posted at

テンプレートを作っていくうちに「ここは複数の箇所で使い回しできるなあ」と思う場面があります。
ここではそのような場面に遭遇した時の説明をしたいと思います。

renderメソッド

viewテンプレート内では
renderメソッドを使用することができます。
このrenderメソッドを使用することで、部分テンプレート(パーシャルともいう)の読み込みを行うことができます。

以下簡単な例になります。

app/views/_form.html.erb
# 使い回したい検索フォームコード

app/views/index.html.erb
<p>一覧画面</p>
<%= render 'form', task: @task %>

フォームを定義したファイルをindexのテンプレートから呼び出しています。

render 'form'
のように記述すると、ファイル名が「_ 」で始まるテンプレートファイルから探索します。
formと記述しているが、実際に探索するテンプレートファイル名は'_form'となります。

layoutテンプレート

layoutテンプレートとは特定の構造をコンポーネントとして共通化する以外に、headタグやよくあるヘッダーやフッターの共通であるのが一般的になります。
そういった「外側」のレイアウトをテンプレートとして扱う仕組みもあります。

以下簡単な例になります。

app/views/show.html.erb
# テンプレートしたいコード
app/views/layouts/application.html.erb
<body>
  <%= yield %>
</body>

このようにすることでyieldの部分にテンプレート化したいコンテンツが展開されるようになりました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?