Turbo Rails 7应用响应内容被追加到body标签外问题求助
Turbo Rails 7 注册后内容异常追加到
</body>外的问题 复现步骤
- 执行
./bin/dev启动服务 - 访问注册页面
http://127.0.0.1:3000/users/sign_up - 输入测试用户名和密码
- 点击“注册”按钮
当前异常表现
- 注册表单未消失,首页的“hello world”内容被追加到闭合的
</body>标签外部,原body内容保留 - Rails日志显示响应逻辑无明显错误
期望结果
注册表单消失,页面正常跳转并显示首页内容
解决方案
该问题源于Devise默认响应未适配Turbo的请求处理机制,可通过以下两种方式修复:
方式1:修改Devise全局配置
在config/initializers/devise.rb中添加Turbo支持的格式:
config.navigational_formats = ['*/*', :html, :turbo_stream]
方式2:自定义注册控制器
创建自定义的Devise注册控制器,确保重定向使用Turbo兼容的状态码:
# app/controllers/registrations_controller.rb class RegistrationsController < Devise::RegistrationsController def create super do |resource| if resource.persisted? # 使用303状态码适配Turbo重定向 redirect_to after_sign_up_path_for(resource), status: :see_other end end end end
同时在config/routes.rb中指定自定义控制器:
devise_for :users, controllers: { registrations: 'registrations' }
内容的提问来源于stack exchange,提问作者Jason FB
相关产品推荐
相关产品推荐

