CableReady频道的insert_adjacent_html相反吗?

问题描述

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

我有一个CableReady频道“当前”,可以动态显示“帖子”的供稿。我可以让帖子单独显示很好,但是我不知道如何单独从频道中删除它们。

通过以下方式在PostsController.rb中控制该通道对Posts的输入:

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,新的帖子出现在顶部。但是这些帖子只会出现一定的秒数。您也可以将Feed倒带到特定位置。因此,如果倒带时间,则从提要中删除的帖子会再次出现在顶部。

感谢其他任何想法或建议,谢谢

解决方法

由于您不想从DOM中删除帖子,因此一种解决方案是简单地隐藏帖子。您可以使用下面的方法来设置CSS属性。 enter image description here 另外,如果您使用CSS框架,则可以通过以下方式添加类: enter image description here

,

感谢Roland Studer的回答:

该问题是由于该部分没有正确的标识符。部分的最外面的div现在看起来像这样:

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

,现在删除帖子的控制器方法如下:

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

魔术! :)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...