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

Rails Turbo Frame渲染的表单无法二次提交 如何不新增路由解决

Turbo Frame内同路径GET筛选表单二次提交被拦截问题

问题背景

位于turbo_frame内的表单首次提交后,第二次提交会被拦截。当前页面路径与表单提交的action路径完全一致,已知Turbo要求表单提交后必须重定向到新地址或返回错误码。

核心疑问

  • 我在所有index视图上都部署了向index action发送GET请求的表单,用于根据URL查询参数筛选记录,之前运行完全正常,请问在最新版Rails中该场景是否不再支持?
  • 有没有可以不用为表单action新增路由的替代方案?
  • 这类筛选、搜索请求属于幂等请求,所以采用GET方法,表单是收集并发送筛选参数非常便捷的方式,请问搭配Hotwire的Rails在该场景下要求重定向是有意设计的正确逻辑吗?

临时解决方案

目前已通过绕开Turbo、改用XHR方式提交表单实现需求,操作步骤如下:

  • 给表单添加local: false和data-turbo: false属性
  • 新增index.js.erb文件,通过document.getElementByID(<Turbo Frame的对应ID>)获取目标Turbo Frame元素,将其outerHTML设置为渲染后的局部视图代码

该方案存在后续失效风险:若Rails官方废弃ujs特性,该实现可能无法正常运行,后续可考虑用mrujs替代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:21:04