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

Rails Turbo点击Replies无法跳转,turbo-frame缺失错误求助

Rails Turbo 点击Replies链接未跳转页面报错排查

问题原因

你的link_to位于turbo_frame_tag内部,Turbo默认会将该链接识别为Turbo Frame更新请求,而非整页跳转请求。它会尝试用响应中同ID的<turbo-frame>替换当前页面的对应frame,但你的需求是跳转到tweet的show页面,导致Turbo因找不到匹配的frame而报错。

解决方案

方案1:强制整页跳转(符合你的需求)

给link_to添加data-turbo="false"属性,禁用Turbo的Frame处理逻辑,让链接触发正常的整页跳转:

<%= link_to tweet_path(tweet_presenter.tweet), class: "text-decoration-none text-black replies", data: { turbo: false } do %>
  <%= image_tag "speech.png", size: "20x20", class: "me-1" %>
  <span>Replies</span>
<% end %>

注:修正了你原代码中未闭合的</span>标签

方案2:适配Turbo Frame更新(若需在当前页加载内容)

如果你希望通过Turbo Frame在当前页面加载show内容,需确保:

  • tweets/show.html.erb中包含与触发请求一致ID的Turbo Frame,且使用英文引号:
    <%= turbo_frame_tag dom_id(@tweet) do %>
      <!-- show页面的内容 -->
    <% end %>
    
  • 检查show页面的响应内容:在浏览器Network面板中查看请求的Response,确认<turbo-frame id="tweet_1">(英文引号)直接存在于响应中,未被其他嵌套元素遮挡。

额外排查点

  • 确认dom_id(tweet_presenter.tweet)生成的ID与show页面中Turbo Frame的ID完全一致(注意避免中文引号、拼写错误)
  • 检查tweets_controller#show是否正确返回了包含目标Turbo Frame的视图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:47:19