我注意到turbo帧通过src
属性设置延迟加载的奇怪行为:
nav
= turbo_frame_tag 'primary_menu', src: primary_menu_path
: def primary_menu
: respond_to do |format|
: format.turbo_stream
> : format.html { binding.pry ; render plain: 'should not reach this block' }
: end
: end
)> turbo_frame_request?
=> true
出于某种原因,它被解释为常规请求的html请求,尽管CCD_ 2返回=>true
。是什么原因造成的?如何修复?
第页。S.primary_menu.turbo_stream.slim
对于该控制器动作是存在的。
本地版本:
hotwire-rails 0.1.3
@hotwired/turbo-rails 7.0.0-beta.5
在对turbo
内部结构有更好了解的人正确解释之前,下面是一个对我有效的方法:
<%= turbo_frame_tag 'primary_menu', src: primary_menu_path %>
将被解释为HTML请求:
def primary_menu
# load your thing
respond_to do |format|
format.html
end
end
在您的primary_menu.html.erb
中,请确保使用<%= turbo_frame_tag 'primary_menu' do %>
块包装您的内容。
请记住:
turbo_frame_tag
名称必须在此处与其原始定义/需求相匹配- 则该响应中的任何附加的CCD_ 11封装块将被静默地忽略
这是Turbo文档中所述的预期行为
默认情况下,Turbo在提交链接或方法类型为GET 的表单时不会添加text/vnd.Turbo-stream.html MIME类型
要覆盖此行为:
要在应用程序中使用Turbo Streams响应和GET请求,您可以通过在链接或表单中添加数据Turbo流属性来指示Turbo包含MIME类型。
这里也有答案
原因是对于GET请求,使用Turbo帧而不是流更有意义