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
相关产品推荐
相关产品推荐

