You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:07:36