1

我想在我的应用程序中有一个如下所示的评论部分:

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 中是否有原生支持来表示适用于这种数据结构的树数据结构?或者我需要为这个任务定制一些东西吗?

4

5 回答 5

4

您可以使用嵌套集插件之一 -awesome_nested_set似乎是最积极维护的一个。这些允许您通过一次调用数据库来选择完整的集合(包括所有后代)。

于 2009-07-23T17:42:36.577 回答
3

您可能想查看acts_as_tree的类似内容。

于 2009-07-23T17:38:11.127 回答
2

您可以尝试使用acts_as_commentable_with_threading插件-它使用了Ryan Bates 的想法(参见RailsCast 关于多态关联)和awesome_nested_set

于 2009-07-24T05:53:31.710 回答
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
于 2009-07-23T17:37:23.220 回答
1

我不得不在 Rails 中实现这样的事情。这不是太难。乔的建议几乎涵盖了它。您的案例特别简单,因为您不必担心移动树枝。一旦响应被添加到响应树中,它就会保持原样或(可能)被删除。

我会说对于这样的情况,自己实现它比使用 gem 或插件更实用。

于 2009-07-23T18:07:52.877 回答