0

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

我有一个 CableReady 频道“当前”,它动态显示“帖子”的提要。我可以让帖子单独出现就好了,但我不知道如何单独从频道中删除它们。

这个 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(... ,但这只会一次性删除频道中的所有帖子

我计划在我的 PostsController.rb 中使用另一种方法来执行删除:

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

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

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

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

感谢您对其他策略的任何想法或建议,谢谢

4

2 回答 2

2

由于您不想从 DOM 中删除帖子,因此一种解决方案可能是简单地隐藏帖子。您可以使用下面的方法来设置 CSS 属性。 在此处输入图像描述 或者,如果您使用 CSS 框架,您可以通过以下方式添加一个类: 在此处输入图像描述

于 2020-08-28T11:56:42.103 回答
1

感谢Roland Studer的回答:

问题是由于部分没有正确的标识符。部分的最外层 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

魔法!:)

于 2020-08-28T14:29:06.073 回答