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

Rails 7.1中Turbo-Frames模板格式问题及渲染异常求助

Turbo帧模板渲染异常问题及疑问

相关代码

表单模板(app/views/the_form.html.erb)

<%= turbo_frame_tag "dog_quick_search" do %>
    <% form_tag quick_search_via_form_dogs_path(format: :turbo_stream) do %>
    blah
    blah
    <%= submit_tag('Go', class: 'btn-warning') %>
<% end %>

控制器代码(app/controllers/dogs_controller.rb)

def quick_search_via_form
    do stuff...
    render 'xxxx'
end

目标渲染模板(app/views/dogs/xxxx相关模板)

<%= turbo_frame_tag "dog_quick_search" do %>
  Bring back ujs
<% end %>

不同扩展名对应的异常

  • xxxx.html.erb:抛出ActionView::MissingTemplate错误,提示找不到turbo_stream格式的模板
  • xxxx.erb:模板内容直接替换整个网页,未仅更新指定Turbo帧
  • xxxx.turbo-stream.html.erb:同样抛出ActionView::MissingTemplate错误

解决方法

在控制器的render指令中显式指定格式后问题解决:

render 'xxxx', formats: :html

疑问

按照此前Rails版本的逻辑,.html.erb扩展名已明确表明这是HTML模板,为何必须显式指定formats: :html,才能让Turbo正确识别并仅更新对应Turbo帧?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:15:57