CableReady 通道的 insert_adjacent_html 相反?

The opposite of insert_adjacent_html for CableReady channel?

问题已得到解答 -- 请参阅下面的 post

我有一个 CableReady 频道 'Current',它动态显示 'Posts' 的提要。我可以让 post 单独显示,但我不知道如何从频道中单独删除它们。

此 Posts 到通道的输入在 PostsController.rb 中控制,如下所示:

def postshow
  @post = Post.find(params[:id])
  cable_ready["current"].insert_adjacent_html(
    selector: "#current#{@video.id}",
    position: "afterbegin",
    html: render_to_string(partial: "posts/post", locals: {post: @post})
  )
  cable_ready.broadcast
end

我试过 remove 方法,例如cable_ready["current"].remove(... 但这只会一次性删除频道中的所有 Posts

我打算在 PostsController.rb 中使用另一种方法来执行删除:

def postremove
  @post = Post.find(params[:id]
  ...[code to remove the post here]
end

我不想完全从 DOM 中删除 Post,因为提要是动态的,我希望它们能够在某个时候再次显示在提要中。

已编辑:对通缉行为的进一步解释

将 feed 想象成 Twitter,新的 post 出现在顶部。但是这些 post 只会出现一定的秒数。您还可以将提要倒回某个点。因此,如果您倒回时间,从提要中删除的 post 可以再次出现在顶部。

如有任何其他策略的想法或建议,我们将不胜感激,谢谢

既然您不想从 DOM 中删除 post,那么也许一种解决方案是简单地隐藏 post。您可以使用下面的方法来设置一个CSS 属性。 或者,如果您使用 CSS 框架,您可以通过以下方式添加 class:

感谢 Roland Studer 的回答:

问题是由于部分没有正确的标识符。部分的 outer-most div 现在看起来像这样:

<div id="<%= dom_id(post)%>" ... >

删除 Post 的控制器方法现在如下所示:

def postremove
    @post = Post.find(params[:id])
    cable_ready["current"].remove(
      selector: "[data-id=\"#{@post.id}\"]"
    )
    cable_ready.broadcast
end

神奇! :)