用途:在 Rails 项目中使用 Inertia.js 搭配 React、Vue 或 Svelte 构建现代单页应用,用服务端路由与控制器实现 SPA 体验,避免传统 API + 前端 SPA 的路由重复与状态复杂问题。
主要能力:搭建 Inertia.js 与 Rails 集成;创建 Inertia 页面组件;用 useForm 钩子处理表单;管理共享 props 与 flash 消息;实现无需 API 的客户端路由;支持带进度跟踪的文件上传。
使用方式:在 Gemfile 添加 gem 'inertia_rails' 与 gem 'vite_rails',执行 bundle install 和 rails inertia:install(选择 React、Vue 或 Svelte)。在 config/initializers/inertia_rails.rb 中配置版本与共享数据(如 auth、flash)。控制器用 render inertia: 'Articles/Index', props: {...} 返回页面与数据,创建失败时用 redirect_to ..., inertia: { errors: ... } 回传错误。前端页面组件从 @inertiajs/react 导入 Link、useForm、usePage 等,用 Link 替代 a 标签,用 useForm 管理 data、setData、post、processing、errors,用 usePage().props 读取共享数据,通过 Index.layout 指定布局,文件上传时设置 forceFormData: true 并读取 progress.percentage。
适用场景:需要 SPA 交互但保留 Rails 服务端路由与控制器逻辑的项目;表单提交、共享导航与认证状态、flash 提示、文件上传等常见页面需求。
限制与注意:不要使用 window.location,不要创建 REST API,不要客户端拉取数据,不要绕过 Inertia 路由;校验应在服务端完成,客户端仅负责 UX。框架专属模式可参考 references/react-patterns.md、references/vue-patterns.md、references/svelte-patterns.md。具体版本、收费与平台信息暂未提供。