我已经使用 Turbo Streams 几个月了——一切都很好。
现在我正在尝试broadcast
——不好。
从控制台,我可以看到broadcast
aUserRequest
是成功的:
pry(main)> u.broadcast_append
UserRequestMessage Load (0.6ms) SELECT "user_request_messages".* FROM "user_request_messages" WHERE "user_request_messages"."user_request_id" = $1 ORDER BY "user_request_messages"."position" DESC LIMIT $2 /*application:OccamPlatform*/ [["user_request_id", "0084bfb8-014e-4a09-bcb4-f760a3291fd4"], ["LIMIT", 1]]
Rendered user_requests/_user_request.slim (Duration: 3.4ms | Allocations: 403)
[ActionCable] Broadcasting to Z2lkOi8vb2NjYW0tcGxhdGZvcm0vVXNlclJlcXVlc3QvMDA4NGJmYjgtMDE0ZS00YTA5LWJjYjQtZjc2MGEzMjkxZmQ0: "<turbo-stream action=\"append\" target=\"user_requests\"><template><div class=\"Card\"><a href=\"/user_requests/0084bfb8-014e-4a09-bcb4-f760a3291fd4\"><div class=\"Stuff in Here">Asdsdd</div></a></div></template></turbo-stream>"
=> 0
问题是将广播发送到客户端(浏览器)(我假设=> 0
意味着没有找到目标,因为客户端没有显示任何内容)。
我在有turbo_stream_from :user_requests
问题的页面上有,并且我尝试过包含turbo_frame_tag :user_requests
(不包含时,只包含一个<div id="user_requests"></div>
),效果相同:没有任何反应。我可以在控制台中看到 websocket 已连接,并且有一堆成功使用 Turbo Stream(ing) 的表单和控制器。
使用,Slim 我写道:
= turbo_stream_from :user_requests
= turbo_frame_tag :user_requests
这就是 DOM 中显示的内容:
<turbo-cable-stream-source channel="Turbo::StreamsChannel" signed-stream-name="InVzZXJfcmVxdWVzdHMi--d6407940efb20bc5499039ecbb8fe983dbd7cb74777c1480127e76f3dc019278"></turbo-cable-stream-source>
<turbo-frame id="user_requests"></turbo-frame>