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

Rails 7 + Turbo:303重定向未被正常跳转

问题分析与解决方案

你遇到的问题是Turbo处理表单提交后的重定向时,未触发整个页面跳转——尽管产品已成功删除,且网络请求显示GET请求已成功返回200。

以下是几个排查方向和解决方案:

1. 强制使用普通表单提交(绕过Turbo)

Turbo默认会拦截表单请求并通过AJAX处理,虽然303状态码理论上应触发页面导航,但某些场景下可能因Turbo的上下文处理逻辑导致页面不跳转。可以给button_to添加data: { turbo: false },让浏览器以传统方式处理表单提交和重定向:

button_to('Delete', @product, method: :delete, data: { turbo: false })

2. 检查页面结构完整性

确保products_path返回的是完整HTML页面(包含<html>、<head>、<body>标签),而非页面片段。Turbo需要完整的页面结构来替换当前页面,如果返回的是片段,可能不会触发视觉上的页面跳转。

3. 排查JavaScript报错

打开浏览器控制台(F12),查看是否有Turbo相关的JavaScript报错。即使其他Turbo功能正常,个别场景下的错误(比如CSRF令牌失效、Turbo加载异常)也可能导致导航失败。

4. 确认按钮的DOM上下文

如果删除按钮被嵌套在turbo_frame标签内(即使你没特意添加,布局中可能存在),Turbo会将重定向的内容加载到该frame内,而非整个页面跳转。检查页面结构,确认按钮不在任何turbo_frame标签中。

内容的提问来源于stack exchange,提问作者0lli.rocks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:35:07