问题描述
问题已得到解答-参见下面的帖子
我有一个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属性。 另外,如果您使用CSS框架,则可以通过以下方式添加类:
,感谢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
魔术! :)