尝试turborail;给出这个超级简单的配置:
# posts/index.html.erb
<%= turbo_stream_from("posts") %>
<%= turbo_frame_tag "posts" do %>
<%= render posts %>
<% end %>
# posts/_post.html.erb
<%= turbo_stream_from(post) %>
<%= turbo_frame_tag dom_id(post) do %>
<%= post.label %>
<% end %>
# app/models/post.rb
class Post < ApplicationRecord
broadcasts
end
字符串
我们希望在添加新帖子时刷新列表。
当更新一个给定的帖子时,我们希望它在列表中刷新。
一开始一切都很顺利,我们得到了我们想要的。然后,导航,回到页面,事情开始变得超级丑陋;后端无限循环以下内容:
[ActionCable] [5e298b47-2a81-4770-9afb-07be06991d62] Ignoring message processed after the WebSocket was closed: "{\"command\":\"subscribe\",\"identifier\":\"{\\\"channel\\\":\\\"Turbo::StreamsChannel\\\",\\\"signed_stream_name\\\":\\\"IloybGtPaTh2WkcxNEwwVjBiRG82VkhKaGJuTm1aWEl2TXpnMVlqRmxOMkl0TVdWaE1pMDBZakppTFRnMk5qUXRZbVUwT1RWbVl6bGhOVGxpIg==--69b574f5584e2cfcfbf1d59d692f4cea40ce0d730d7794e3dac523cd609006a3\\\"}\"}")
型
在某个时候,浏览器崩溃了
这可能是我们的配置中需要修复的明显问题;至少需要寻求帮助来找出该怎么做
1条答案
按热度按时间li9yvcax1#
我仍然在验证我自己的应用程序中的修复,但我怀疑这是因为你订阅了
post
涡轮流每次部分被替换/重新渲染。对你来说,使用模型after_commit
钩子等可能更有意义。我已经将我的等效订阅行移到了主文件(在您的情况下是索引),并且从那以后就无法重现这个问题。
我的设置与你的设置有点不同,因为我没有使用集合进行渲染。下面是我的代码:
字符串