ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
eRuby とは
eRuby (embedded Ruby) は、HTML や設定ファイルなどのテキスト中に Ruby コードを埋め込むためのテンプレート技術の総称です。<% %> のような特殊タグでマークアップ中にロジックを書き、結果のテキストを生成します。
代表実装に Ruby 標準の ERB、高速な Erubi / Erubis があります。Ruby on Rails のビュー (.html.erb) では現在 Erubi が使われています。
4 種類のタグ
| タグ | 意味 | 出力 |
|---|---|---|
<% Ruby %> | Ruby コードを実行(結果は出力しない) | なし |
<%= 式 %> | 式の結果を文字列として出力 | あり |
<%# コメント %> | テンプレート上のコメント | なし |
<%- -%> | 前後の余分な改行・空白を抑制 | 抑制 |
基本サンプル (ERB)
require 'erb'
template = <<~ERB
<h1><%= title %></h1>
<ul>
<% items.each do |i| %>
<li><%= i %></li>
<% end %>
</ul>
ERB
title = "果物リスト"
items = ["りんご", "みかん", "ぶどう"]
erb = ERB.new(template)
puts erb.result(binding)<!-- 出力 -->
<h1>果物リスト</h1>
<ul>
<li>りんご</li>
<li>みかん</li>
<li>ぶどう</li>
</ul>
ファイルからテンプレートを読む
# template.html.erb
# <h1>こんにちは、<%= name %> さん!</h1>
template = File.read('template.html.erb')
name = "Alice"
puts ERB.new(template).result(binding)
余白制御 (trim_mode)
ERB.new の第 2 引数 (Ruby 2.6+ は trim_mode: キーワード) で改行・空白の扱いを指定できます。
# "-" モード: <%- -%> で改行抑制
erb = ERB.new(template, trim_mode: '-')
# ">" モード: %> 直後の改行を削除
erb = ERB.new(template, trim_mode: '>')
# "<>" モード: 行頭/行末の余分な改行を削除
erb = ERB.new(template, trim_mode: '<>')
# "%" モード: 行頭 % で始まる行を Ruby とみなす
erb = ERB.new(template, trim_mode: '%')
Rails での使い方
Rails のビューは app/views/コントローラ名/アクション名.html.erb に置きます。コントローラのインスタンス変数 (@user 等) がそのままビューで使えます。
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
end<!-- app/views/users/show.html.erb -->
<h1><%= @user.name %></h1>
<p>Email: <%= @user.email %></p>
<% if @user.admin? %>
<p><strong>管理者です</strong></p>
<% end %>
<%# このコメントはレンダリングされない %>
自動エスケープ (XSS 対策)
Rails の .html.erb では <%= %> が自動で HTML エスケープされます。ユーザー入力をそのまま表示しても <script> が挿入できません。
<%# user.name に "" が入っていても安全 %>
名前: <%= @user.name %>
<%# 意図的にエスケープしない (信頼できる HTML のみ) %>
<%= raw @article.body_html %>
<%== @article.body_html %>
ERB vs Erubi vs Erubis
| 実装 | 特徴 | 主な利用 |
|---|---|---|
| ERB | Ruby 標準ライブラリ。シンプル | スクリプト / メールテンプレ |
| Erubi | Erubis の後継。高速 + 自動エスケープ | Rails 5.1+ のデフォルト |
| Erubis | 歴史的に高速。メンテ終了 | 古い Rails アプリ |
主な用途
- Rails / Sinatra のビュー: HTML 出力の定番
- メール本文の生成: ActionMailer の
.text.erb/.html.erb - 設定ファイルのテンプレート化: Chef / Puppet などの構成管理ツールが採用
- 静的サイトジェネレータ: Middleman など
- コード生成: Rails の
generateがスキャフォールドに ERB を使う
FAQ
Q: ERB と Haml / Slim どちらを使う?
A: ERB は HTML 知識がそのまま使え学習コストが低い。Haml/Slim は記述量が少ないが独自記法の学習が必要。新規 Rails は ERB がほぼ標準。
Q: パフォーマンスは?
A: 標準 ERB は遅め。Rails の本番運用なら Erubi に切り替わっておりキャッシュも効くので体感は十分高速。
Q: テンプレート内で複雑なロジックを書きたい
A: アンチパターン。ヘルパーやプレゼンター (Draper など) にロジックを移すべき。ビューは表示のみが理想。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- JSP
- eRuby
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?