我有以下代码:
<%= turbo_frame_tag :my_frame do %>
frame
<% end %>
<%= link_to "About", about_path, data: { turbo_frame: :my_frame } %>
点击"About"链接,框架的内容不会更新。相反,整个页面导航到about_path
。
任何想法?
这是一个迟来的答案,但是我在遇到同样的问题后偶然发现了你的问题。在我的例子中,我试图在表中使用turbo_frame_tag,但它不能工作,因为表不接受任何其他元素,但它自己:https://github.com/hotwired/turbo/issues/48
结果是您必须将响应包装在相同的命名turbo标签中。
第一次通话
<%= turbo_frame_tag :my_frame do %>
frame content
<% end %>
你的回复应该这样包装:
<%= turbo_frame_tag :my_frame do %>
response generated on server.
<% end %>
在我的例子中,这是因为没有在application.js中导入hotwire。我只是添加了:import "@hotwired/turbo-rails"
,它就完成了。
这很奇怪,因为我在涡轮轨道gem中没有看到任何关于它的要求,并且在运行安装rake任务后没有这些更改。
My app is on rails .
在link_to标签中应该是data: {"turbo-frame"=> "my_frame"}
。我认为它没有把my_frame理解为一个符号,或者是哈希中的turbo_frame键。
我刚刚解决了类似的情况。问题是我请求的视图的-标签中有一个错别字。这个错误在控制台显示为:
响应中缺少#show_client的匹配帧,转换为整页访问。
意思是你应该确保你请求的资源是有序的,否则Rails会退回到整页替换你的链接正在请求的内容。
这可能是我的情况,但我也有同样的问题。
结果是它在一个刺激控制器的范围内,我在我的链接所在的父元素之一上有一个.stopPropagation()
。
移除.stopPropagation()
可以使涡轮框架链接再次正常工作。
我假设您正在重写导航。根据文档,您的代码应该是
<%= turbo_frame_tag :my_frame do %>
frame
<%= link_to "About", about_path %>
<% end %>
试一试:
在终端yarn add @hotwired/turbo-rails
执行命令
next添加行import "@hotwired/turbo-rails"
intoapp/javascript/application.js
和运行轨道bin/dev
代替rails s
它适合我。