我希望在我的应用中有一个评论部分,如下所示:
response1
response1a
response1b
response1b1
response2
response2a
response2b
response2c
response2c1
response2c1a
response2c1a1
response2c1a1
response2c1a1a
response2c1a1a1
假设我使用HTML执行此操作,如下所示:
<div class="comment">
Response1
<div class="comment">
Response1a
<div class="comment">
Response1a1
</div>
</div>
<div class="comment">
Response1b
</div>
</div>
这个CSS:
.comment { margin-left: 50px; }
仍然存在在Rails中使用的数据结构来表示注释及其相互关系的问题。 Ruby中是否存在本机支持,用于表示适用于此数据结构的树数据结构?或者我是否需要为此任务构建自定义内容?
答案 0 :(得分:4)
您可以使用其中一个嵌套的set插件 - awesome_nested_set
似乎是最活跃的插件。这些允许您通过一次调用数据库来选择一整套(包括所有后代)。
答案 1 :(得分:3)
您可能希望查看acts_as_tree这样的内容。
答案 2 :(得分:2)
class Post < ActiveRecord::Base
belongs_to :parent, :class_name => 'Post'
end
迁移:
create_table :posts do |t|
t.string :body
t.integer :parent_id
end
答案 3 :(得分:2)
你可以尝试使用acts_as_commentable_with_threading插件 - 它使用Ryan Bates的想法(参见关于多态关联的RailsCast)和awesome_nested_set
答案 4 :(得分:1)
我必须在Rails中实现这样的事情。这不是太困难。乔的建议几乎涵盖了它。您的情况特别容易,因为您不必担心移动树枝。一旦响应被添加到响应树中,它就会保持原样或(可能)被删除。
我会说这样的情况,自己实现它比使用gem或插件更实用。