我注意到通过src
属性设置延迟加载turbo帧的奇怪行为:
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请求,尽管turbo_frame_request?
返回=> true
。是什么原因造成的以及如何修复?
P.S. primary_menu.turbo_stream.slim
为该控制器操作而存在。
本地版本:hotwire-rails 0.1.3
@hotwired/turbo-rails 7.0.0-beta.5
2条答案
按热度按时间tvmytwxo1#
在有更好的
turbo
内部知识的人正确解释之前,下面是一个对我有用的方法:将被解释为HTML请求:
在您
primary_menu.html.erb
中,请确保使用<%= turbo_frame_tag 'primary_menu' do %>
块 Package 内容。请记住:
turbo_frame_tag
名称必须与此处及其原始定义/require匹配。brvekthn2#
这是预期行为,如the Turbo docs中所述
默认情况下,Turbo在提交链接或方法类型为GET的表单时不会添加text/vnd.turbo-stream.html MIME类型
要覆盖此行为,请执行以下操作:
要在应用程序中对GET请求使用Turbo Streams响应,您可以通过向链接或表单添加data-turbo-stream属性来指示Turbo包含MIME类型。
答案也是here
这样做的原因是,对于GET请求,使用Turbo * 帧 * 而不是 * 流 * 更有意义。