Rails 7中Turbo Stream GET请求自定义参数丢失问题求助
让Turbo GET请求传递自定义参数的解决方法
可行方案
移除data属性中的turbo_method: :get配置,因为<a>标签默认就是发起GET请求,无需额外指定。修改后的代码如下:
<%= link_to "Add crew to ship", new_crew_path(ship_id: ship.id), data: { turbo_stream: true } %>
此时点击链接,Turbo会正常发起包含ship_id参数的GET请求,控制器能正确接收到参数。
问题原因
当给<a>标签添加data-turbo-method="get"时,Turbo会触发特殊处理逻辑:它会生成一个空请求体的GET请求,并且不会自动携带URL中的查询参数。这是Turbo为区分常规a标签GET请求与手动指定method的GET请求设计的行为。
而你测试的两种正常场景:
- 移除
turbo_stream: true后,请求由浏览器默认处理,自然保留URL参数; - POST请求时,Turbo会正确携带URL查询字符串中的参数,因此能正常传递。
内容的提问来源于stack exchange,提问作者Lars Westergren
相关产品推荐
相关产品推荐

