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

