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

Rails Turbo Stream仅更新页面单个元素问题排查

问题原因及解决方案

问题出在视图代码的ERB输出语法上:

  • 渲染question的turbo frame时,你用了<% turbo_frame_tag "question" do %>,这种写法只会执行Ruby代码但不会将生成的<turbo-frame>标签输出到页面DOM中,导致页面里根本不存在id为question的目标元素,Turbo Stream的update指令找不到对应元素,自然没法完成更新。
  • response能正常更新,大概率是你实际代码里给它用了<%= %>语法(或者页面上存在其他id为response的元素),让Turbo Stream能找到目标。

修复方法很简单,修改视图中question部分的ERB语法,添加=符号,让turbo frame标签正确输出到页面:

<div class="mb-6">
    <h2 class="text-2xl font-semibold">
      <%= turbo_frame_tag "question" do %>
        <%= @question %>
      <% end %>
    </h2>
    <p class="text-gray-700">
      <%= turbo_frame_tag "response" do %>
        <%= @response %>
      <% end %>
    </p>
  </div>

修改后页面会生成带有id="question"和id="response"的turbo frame元素,Turbo Stream的update指令就能正确找到目标并更新内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:18:15