You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Turbo::Broadcastable在目标元素外部实现插入?

问题解决:Turbo broadcast_append_to 内容插入到目标div外部

问题背景

使用broadcast_append_to方法时,默认会将内容追加到目标元素内部末尾,但需求是将内容插入到目标div的外部之后,当前代码导致内容被包裹在目标div里,不符合预期。

解决方案

要在目标元素外部之后插入内容,需要使用insert_after动作替代默认的append动作,有两种实现方式:

方式1:使用broadcast_insert_to指定action: :insert_after

修改广播代码为:

broadcast_insert_to "divs", target: "append_outside_of_me", partial: "tests/test", action: :insert_after

方式2:使用Rails 7.1+新增的broadcast_after_to快捷方法

如果你的Rails版本是7.1及以上,可以用更简洁的写法:

broadcast_after_to "divs", target: "append_outside_of_me", partial: "tests/test"

原理说明

  • broadcast_append_to对应的Turbo Stream动作是append,作用是将内容添加到目标元素的内部子节点末尾。
  • insert_after(或broadcast_after_to)对应的动作是insert_after,作用是将内容插入到目标元素的外部之后,完全匹配你的期望结果。

执行上述代码后,前端生成的HTML会和你期望的一致:

<div id="append_outside_of_me">
</div>
<!-- BEGIN app/views/tests/_test.html.erb -->Appended text<!-- END app/views/tests/_test.html.erb -->

内容的提问来源于stack exchange,提问作者Paul Bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:10:24