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

求助:Rails 7.0.8应用无法解析turbo_stream,反而下载文件

解决Rails 7 Turbo Stream请求被下载而非解析的问题

检查请求头与表单配置

  • 确保创建帖子的表单使用form_with(Rails 7默认支持Turbo),或手动给表单添加data: { turbo: true }属性,保证请求会带上Turbo所需的头信息。
  • 打开浏览器开发者工具的Network面板,查看创建请求的Accept头,确认包含text/vnd.turbo-stream.html。

验证Turbo的引入配置

  • 检查app/javascript/application.js是否正确导入Turbo:
    import "@hotwired/turbo-rails"
    
  • 确认config/importmap.rb中存在Turbo的pin配置:
    pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
    

检查控制器响应逻辑

  • 确保PostsController的create动作没有强制指定非Turbo格式的响应。如果使用respond_to,要包含:turbo_stream格式:
    def create
      @post = Post.new(post_params)
      if @post.save
        respond_to do |format|
          format.turbo_stream
          format.html { redirect_to posts_path }
        end
      else
        # 处理错误逻辑
      end
    end
    

确认Turbo Stream视图的正确性

  • 检查app/views/posts/create.turbo_stream.erb的文件名拼写无误(注意是下划线turbo_stream而非连字符),且语法正确,示例:
    <%= turbo_stream.append "posts" do %>
      <%= render @post %>
    <% end %>
    

生产环境额外检查

  • 运行rails assets:precompile确保资产编译完成,检查服务器(如Nginx)配置,确保静态资源访问正常,未拦截Turbo相关响应头。
  • 确认config/environments/production.rb中config.public_file_server.enabled配置正确,或已通过反向代理处理静态资源。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:52:05