用途:该技能面向 Rails 8 项目,帮助开发者用 Hotwire 实现响应式、实时页面更新,核心思路是服务端发送 HTML 而非 JSON,从而减少自定义 JavaScript。
主要能力:Turbo Drive 通过替换 body 加速导航,支持用 data: { turbo: false } 选择性退出;Turbo Frames 将页面拆分为独立上下文,支持懒加载(loading="lazy")、跳出框架(data: { turbo_frame: "_top" })与内联编辑;Turbo Streams 通过 HTTP 或 WebSocket 下发局部更新,提供 append、replace、remove 等动作;模型回调可配合 broadcast_append_to、broadcast_replace_to、broadcast_remove_to 实现实时广播;Turbo 8 支持 morphing 刷新(turbo-refresh-method、turbo-refresh-scroll)。
使用方式:控制器中按格式响应 turbo_stream 或 html,视图用 turbo_frame 标签与 turbo_stream 辅助方法,实时场景在模型 after_create_commit 等回调中广播,必要时补充 Stimulus 控制器。
适用场景:评论列表、通知、模态框、无限滚动、内联编辑等需要局部刷新或实时更新的 Rails 页面。
限制与注意:需保证 frame ID 匹配、正确使用 422/303 状态码,广播中显式传 request_id: nil;Action Cable 为至多一次投递,重连可能丢块,若需 LLM 流式或投递保证可参考 anycable-coder 技能。调试可用 Turbo.setDebug(true) 并监听 turbo:frame-missing。