カテゴリ: Rails 更新日: 2025/12/25

Railsビュー入門:ERBの基本構文と<%= %> / <% %>の違いを理解

Railsビュー入門:ERBの基本構文と<%= %> / <% %>の違いを理解
Railsビュー入門:ERBの基本構文と<%= %> / <% %>の違いを理解

先生と生徒の会話形式で理解しよう

生徒

「Railsのビューって、どうやってHTMLとプログラムを組み合わせて表示するんですか?」

先生

「RailsではERB(イーアールビー)というテンプレートを使って、HTMLの中にRubyのコードを書くことができますよ。」

生徒

「その中の<%= %>とか、<% %>って何が違うんですか?」

先生

「とても大切なポイントですね。今から丁寧に解説していきます。」

1. ERBとは?

1. ERBとは?
1. ERBとは?

ERB(Embedded Ruby)とは、HTMLファイルの中にRuby(ルビー)というプログラミング言語のコードを埋め込めるテンプレートエンジンです。Rails(レイルズ)のビューでは、このERBを使って、画面に表示する内容を柔軟に制御します。

たとえば、画面に「こんにちは」と出したい場合、HTMLだけでは固定された文字列しか書けませんが、ERBを使えば、「今ログインしているユーザー名」や「データベースから読み込んだ商品名」など、動的な情報を表示することができます。

2. <%= %>と<% %>の違いを理解しよう

2. <%= %>と<% %>の違いを理解しよう
2. <%= %>と<% %>の違いを理解しよう

ERBの中でRubyコードを書くとき、<%= %><% %>という2種類の書き方があります。

この2つの違いは「画面に出力するかどうか」です。

2-1. <%= %>は「出力する」コード

<%= %>は、Rubyで計算された結果をHTMLとして表示するときに使います。たとえば、次のようなコードを書いたとします:


<p>こんにちは、<%= @user.name %>さん!</p>

このコードは、@user.nameに入っている名前を画面に表示します。たとえば@user.nameが「太郎」だった場合、実際の画面ではこう表示されます:


<p>こんにちは、太郎さん!</p>

2-2. <% %>は「処理だけで出力しない」コード

一方、<% %>は、Rubyの処理を実行するけれど、結果を画面には表示しないときに使います。たとえば、繰り返し処理(ループ)を書くときに使います:


<ul>
  <% @products.each do |product| %>
    <li><%= product.name %></li>
  <% end %>
</ul>

このように、<% %>の中は「処理」だけ。出力はされません。その代わり、<%= %>を使ってproduct.nameを表示しています。

3. よくある間違いと注意点

3. よくある間違いと注意点
3. よくある間違いと注意点

初心者の方がよくつまずくポイントとして、「全部<%= %>で書いてしまう」や「表示したいのに<% %>を使ってしまって何も表示されない」といった間違いがあります。

簡単にまとめると、こう覚えるとよいでしょう:

  • <%= %>:表示したいとき(printするイメージ)
  • <% %>:処理だけしたいとき(if文や繰り返し)

4. if文とERBの組み合わせ

4. if文とERBの組み合わせ
4. if文とERBの組み合わせ

HTMLの中で条件によって表示を切り替えるときにも、<% %><%= %>を組み合わせます。たとえば:


<% if @user.logged_in? %>
  <p>ようこそ、<%= @user.name %>さん!</p>
<% else %>
  <p>ログインしてください。</p>
<% end %>

このように、if文の制御部分(ifelse)は<% %>で書き、実際に表示する部分は<%= %>で書くのが基本です。

5. コメントを入れる方法

5. コメントを入れる方法
5. コメントを入れる方法

ERBテンプレートでコメントを書きたい場合は、<%# %>を使います。これはHTMLにも表示されず、ソースにも出ません。


<%# これはERBのコメントです %>

普通のHTMLのコメント<!-- -->も使えますが、それはHTMLソースには残ります。ソースに残したくないメモ書きは、<%# %>を使いましょう。

6. HTMLだけではできない「動的な表示」をERBで

6. HTMLだけではできない「動的な表示」をERBで
6. HTMLだけではできない「動的な表示」をERBで

RailsのビューでERBを使うと、静的なHTMLだけでは実現できない「そのときの状況に応じた画面表示」が可能になります。

例えば、次のような表示も簡単にできます:

  • ログイン中のユーザー名を表示
  • データベースから読み込んだリストを表に表示
  • エラーがあるときだけメッセージを表示

こうした動的表示の核となるのが、まさに<%= %><% %>の正しい使い分けです。

まとめ

まとめ
まとめ

ERBの基本を理解するとRailsビューの仕組みが一気につながる

今回の記事では、Railsのビューで使われるERB(Embedded Ruby)について、基礎から丁寧に解説してきました。Railsを学び始めたばかりの方にとって、HTMLの中に突然<%= %><% %>が出てくると、「これは何をしているのだろう?」と戸惑うことが多いポイントです。しかし、この仕組みを正しく理解できると、Railsの画面表示がどのように作られているのかが一気に見えてきます。

ERBとは、HTMLの中にRubyのコードを埋め込むためのテンプレートエンジンです。これにより、静的なHTMLでは表現できない「動的な画面表示」が可能になります。たとえば、ログイン中のユーザー名を表示したり、データベースに保存されている一覧データを繰り返し表示したりといった処理は、すべてERBによって実現されています。

特に重要なのが、<%= %><% %>の違いです。この2つは見た目がよく似ていますが、役割は明確に分かれています。<%= %>は「画面に出力するための記述」であり、Rubyの評価結果をHTMLとして表示します。一方で、<% %>は「処理専用」の記述で、if文やeach文などの制御構文を書くために使われ、画面には何も表示しません。

この使い分けができるようになると、Railsのビューコードが一気に読みやすくなります。たとえば、繰り返し処理では<% %>でループを開始し、その中で実際に表示したい値だけを<%= %>で出力します。条件分岐の場合も同様で、ifやelseといった条件判定は<% %>、表示したいメッセージや値は<%= %>という役割分担が基本です。

初心者の方がよくやってしまうミスとして、「表示したいのに<% %>を使ってしまい、何も表示されない」というケースがあります。逆に、「処理だけなのに<%= %>を使ってしまい、意図しない値が画面に出てしまう」こともあります。こうしたミスは、ERBの役割を意識することで自然と減っていきます。

また、ERBには<%# %>というコメント専用の書き方があり、これはHTMLのソースにも残らないコメントです。ビューの中で一時的なメモを書きたい場合や、後から読み返す自分やチームメンバーのために説明を残したい場合に役立ちます。HTMLコメントとの違いを理解して使い分けることで、ビューの保守性も高まります。

Railsのビューは、「HTMLを書く場所」というよりも、「画面表示のロジックを整理する場所」と考えると理解しやすくなります。ERBを使うことで、コントローラから渡されたデータを元に、状況に応じた表示を柔軟に切り替えられるようになります。この考え方は、今後フォームや部分テンプレート、レイアウトなどを学んでいく際にも必ず役に立ちます。

ERBの基本構文を振り返るサンプル


<ul>
  <% @users.each do |user| %>
    <% if user.active? %>
      <li><%= user.name %>(有効)</li>
    <% else %>
      <li><%= user.name %>(無効)</li>
    <% end %>
  <% end %>
</ul>

このサンプルでは、<% %>で繰り返し処理と条件分岐を行い、<%= %>でユーザー名を画面に出力しています。ERBの基本的な使い分けが一目で分かる構成になっています。

先生と生徒の振り返り会話

生徒

「最初は<% %><%= %>の違いが全然分からなかったです。」

先生

「でも、表示するかしないか、という視点で見ると分かりやすいでしょう?」

生徒

「はい。画面に出したいものは<%= %>、処理だけなら<% %>ですね。」

先生

「その理解ができれば、Railsのビューはもう怖くありません。」

生徒

「これで、一覧表示や条件分岐も自信を持って書けそうです!」

先生

「いいですね。この調子でビューの仕組みに慣れていきましょう。」

関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
データベース
データベース正規化とは?初心者でもわかるデータ重複を防ぐSQL設計の基本