カテゴリ: Rails 更新日: 2026/03/09

RailsのTurbo Framesで部分更新を完全理解!モーダル・タブ・インライン編集の実装パターン入門

Turbo Framesで部分更新:モーダル/タブ/インライン編集の実装パターン
Turbo Framesで部分更新:モーダル/タブ/インライン編集の実装パターン

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

生徒

「Railsで画面の一部だけを更新する方法ってありますか?全部リロードされるのが気になります」

先生

「RailsではHotwireという仕組みを使うと、画面の一部だけを更新できます。その中心がTurbo Framesです」

生徒

「JavaScriptをたくさん書かないと難しそうです…」

先生

「大丈夫です。Turbo FramesはHTMLとRailsの仕組みをそのまま使うので、とてもシンプルですよ」

1. RailsとHotwireの基本をやさしく理解しよう

1. RailsとHotwireの基本をやさしく理解しよう
1. RailsとHotwireの基本をやさしく理解しよう

Railsは、Webアプリケーションを効率よく作るためのフレームワークです。MVCという役割分担の考え方を使い、Model(データ)、View(画面)、Controller(処理)を分けて開発します。

Hotwireは、RailsでモダンなUIを実現するための仕組みです。ページ全体を再読み込みせず、必要な部分だけを更新することで、アプリの動きを速く、使いやすくします。その中でもTurbo Framesは「画面のこの枠だけ更新したい」というときに使います。

2. Turbo Framesとは?初心者向けのたとえで解説

2. Turbo Framesとは?初心者向けのたとえで解説
2. Turbo Framesとは?初心者向けのたとえで解説

Turbo Framesは、Webページの中にある「更新可能な箱」のようなものです。箱に名前を付けておくと、サーバーから返ってきたHTMLで、その箱の中身だけを入れ替えることができます。

例えば、新聞の一面を全部刷り直すのではなく、天気欄だけ差し替えるイメージです。これにより、画面がチカチカせず、操作がとてもスムーズになります。

3. Turbo Framesの基本的な書き方

3. Turbo Framesの基本的な書き方
3. Turbo Framesの基本的な書き方

まずはTurbo Framesの基本構文を見てみましょう。ビュー(ERB)でturbo_frame_tagを使います。


<%= turbo_frame_tag "profile" do %>
  <p>ユーザー名:太郎</p>
<% end %>

この「profile」という名前のフレームが、部分更新の対象になります。同じ名前のTurbo Frameをサーバーから返すと、その中身だけが更新されます。

4. モーダル表示をTurbo Framesで実装する考え方

4. モーダル表示をTurbo Framesで実装する考え方
4. モーダル表示をTurbo Framesで実装する考え方

モーダルとは、画面の上に重なって表示される小さなウィンドウのことです。Turbo Framesを使うと、モーダルの中身だけをRailsで生成できます。


<turbo-frame id="modal">
  <!-- ここにモーダル内容が入る -->
</turbo-frame>

リンクをクリックすると、コントローラからこのmodalフレーム用のHTMLが返され、モーダル部分だけが差し替わります。JavaScriptでDOM操作を細かく書かなくても実現できるのが大きな特徴です。

5. タブ切り替えを部分更新で実現する仕組み

5. タブ切り替えを部分更新で実現する仕組み
5. タブ切り替えを部分更新で実現する仕組み

タブUIは、「詳細」「コメント」「履歴」など、表示内容を切り替える場面でよく使われます。Turbo Framesでは、タブの中身をフレームとして定義します。


<%= turbo_frame_tag "tab_content" do %>
  <p>最初のタブ内容</p>
<% end %>

各タブのリンク先で同じtab_contentを返すことで、クリックするたびにタブ部分だけが更新されます。ページ全体はそのままなので、操作感がとても軽くなります。

6. インライン編集をTurbo Framesでシンプルに作る

6. インライン編集をTurbo Framesでシンプルに作る
6. インライン編集をTurbo Framesでシンプルに作る

インライン編集とは、表示されているテキストをその場で編集できる仕組みです。編集フォームと表示を同じ場所で切り替えるのにTurbo Framesが向いています。


<%= turbo_frame_tag "username" do %>
  <p>太郎 <%= link_to "編集", edit_user_path %></p>
<% end %>

編集画面では、同じusernameフレームを使ったフォームを返します。保存後は表示用HTMLを返すだけで、自然なインライン編集が完成します。

7. Turbo Framesとコントローラの関係

7. Turbo Framesとコントローラの関係
7. Turbo Framesとコントローラの関係

Turbo Framesは特別なコントローラ処理を必要としません。通常のRailsコントローラでHTMLを返すだけです。


def show
  @user = User.find(params[:id])
end

フレーム対応のビューを用意するだけで、Railsが自動的に「どの部分を更新するか」を判断します。これがHotwireの「Railsらしさ」を活かした設計です。

8. Turbo Framesを使うときの初心者向け注意点

8. Turbo Framesを使うときの初心者向け注意点
8. Turbo Framesを使うときの初心者向け注意点

Turbo Framesでは、フレームのID名を必ず一致させることが重要です。名前が違うと部分更新されず、通常のページ遷移になります。

また、まずは小さなUIから試すのがおすすめです。モーダル、タブ、インライン編集のような「一部分だけ変わる画面」から導入すると、仕組みを理解しやすくなります。

カテゴリの一覧へ
新着記事
New1
Ruby
Rubyのメソッド定義を完全ガイド!初心者でもわかる引数・デフォルト値・キーワード引数・スプラット解説
New2
Ruby
Rubyの例外処理を完全ガイド!初心者でもわかるbegin/rescue/ensureの使い方
New3
Ruby
Bundlerの導入と使い方を完全ガイド!初心者でもわかるGemfileとbundle install
New4
Rails
Active Recordとは?Railsのデータ操作が簡単になるORMの基本を初心者向けに解説!
人気記事
No.1
Java&Spring記事人気No1
Ruby
OpenSSL関連エラーの直し方を完全解説!証明書・ビルドオプション・brew対策まとめ
No.2
Java&Spring記事人気No2
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.3
Java&Spring記事人気No3
データベース
MySQLのWHERE句を完全マスター!初心者向けに条件指定の基本と注意点を徹底解説
No.4
Java&Spring記事人気No4
Ruby
プロキシ環境でも安心!社内ネットワーク下でのRuby gemインストール完全ガイド【SSL対応も解説】
No.5
Java&Spring記事人気No5
Rails
Rails Action Cable入門|チャネル・接続・サブスクライブの基本を図解でやさしく解説
No.6
Java&Spring記事人気No6
Rails
Rails Action Cable徹底解説!broadcastとstream_fromで学ぶリアルタイム通信の基本とパフォーマンス
No.7
Java&Spring記事人気No7
データベース
MySQLのJOIN(結合)を完全攻略!初心者でも図解でわかるSQLクエリ実践ガイド
No.8
Java&Spring記事人気No8
Rails
Railsのリアルタイム通信を完全理解!初心者でもわかる認証付きWebSocketとAction Cableの安全設計