使用涡轮
8.0.4
。
博客模型:
after_update_commit lambda { |blog| }
broadcast_refresh_to blog
}
在博客/show.html.erb中
<%= turbo_stream_from @blog %>
<%= tag.div data: {controller: "blogs"} do %>
<!-- more content here -->
<% end %>
在 blogs_controller.js 中,我有逻辑在 connect 方法中重新初始化几个组件。
broadcast_refresh_to blog
成功刷新页面,但由于morphing
而未执行刺激控制器中的connect方法。
如何解决这个问题?
我找到了解决这个问题的另一个巧妙的解决方案。
只需将
yield(:head)
添加到您的 layout.html.erb
:
<!-- app/views/layouts/application.html.erb -->
<html>
<head><%= yield :head %></head>
<body><%= yield %></body>
</html>
然后将以下方法之一添加到您的页面:
turbo_page_requires_reload
或
turbo_refreshes_with(method: :replace, scroll: :reset)
现在,一旦您访问页面或发送
broadcast_refresh_to
命令,它将完全重新加载,从而导致 Stimulus 控制器重新连接。
更多详细信息请参见:https://github.com/hotwired/turbo-rails/blob/main/app/helpers/turbo/drive_helper.rb