Rails或Ruby中是否有本机支持来表示线程注释

时间:2009-07-23 17:33:01

标签: ruby-on-rails threaded-comments

我希望在我的应用中有一个评论部分,如下所示:

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中是否存在本机支持,用于表示适用于此数据结构的树数据结构?或者我是否需要为此任务构建自定义内容?

5 个答案:

答案 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或插件更实用。