Rails(正確に言うとgem)が用意するヘルパーメソッドでHTMLタグを囲むだけで SPA ライクな画面を実装できる 初学者にはこれが魔術的な動きに感じた Turbo is a language-agnostic framework written in JavaScript (hotwired/turbo-rails: Use Turbo in your Ruby on Rails app より引用) ヘルパータグで囲っているだけでは、 「言語を問わない」イメージがわかない Rails を使わない「素のTurbo」で、その動きを確認してみた そのうえで、Rails で使えるヘルパーや、 Turbo 自体の中身を読んでみた 結果: 魔術的な動きも、自分が学習の中で通った基礎的な概念・技術の積み重ねで 実現されていることを感じることができた
@blog = { **blog_params, id: } settings.db.execute('UPDATE blog SET title = :title, content = :content WHERE id = :id', @blog) # レスポンスヘッダのContent-TypeをTurboStream用に設定 content_type 'text/vnd.turbo-stream.html' erb :update, layout: false end
"./core" window.Turbo = { ...Turbo, StreamActions } Turbo.start() // Turboの起動 // src/core/index.js import { Session } from "./session" const session = new Session(recentRequests) /** * Starts the main session. * This initialises any necessary observers such as those to monitor * link interactions. */ export function start() { session.start() // 各種オブザーバーをまとめて起動 }