0

我正在使用 rails 中的祖先 gem 来嵌套一些评论,而我想要的是让您能够获得所有评论,然后将它们全部嵌套。当我将:@comments = post.comments.arrange_serializable放入我的评论控制器索引操作并获得以下结果时,我如何得到以下结果:

{
   "comments":[
      {
         "id":3,
         "comment":"284723nbrkdgfiy2r84ygwbdjhfg8426trgfewuhjf",
         "author":"asdasdasdas",
         "post_id":268,
         "ancestry":null,
         "created_at":"2014-06-17T19:23:04.667Z",
         "updated_at":"2014-06-17T19:23:04.667Z",
         "children":[
            {
               "id":4,
               "comment":"284723nbrkdgfiy2r84ygwbdjhfg8426trgfewuhjf",
               "author":"asdasdasdas",
               "post_id":268,
               "ancestry":"3",
               "created_at":"2014-06-17T19:24:02.408Z",
               "updated_at":"2014-06-17T19:24:02.408Z",
               "children":[

               ]
            }
         ]
      },
      {
         "id":5,
         "comment":"97ryhewfkhbdasifyt834rygewbfj,dhsg834",
         "author":"asdasdasd",
         "post_id":268,
         "ancestry":"4",
         "created_at":"2014-06-17T20:30:04.887Z",
         "updated_at":"2014-06-17T20:38:16.060Z",
         "children":[

         ]
      }
   ]
}

很明显,comment with应该位于位于comment with下嵌套的 commentid: 5的数组中。childrenid: 4id: 3

有人能告诉我为什么arrange_serializable没有“多巢”评论吗?或者如果有另一个功能可以做到这一点。

4

1 回答 1

1

结构

arrange_serializable似乎正在工作 - 我认为问题在于你如何嵌套评论

我们发现(花了我们很多时间)如果你想使用“嵌套”类别,你需要使用slash这样的:

在此处输入图像描述

因此,如果您尝试“深度嵌套”,则需要确保包含到根对象的整个路径。常见的逻辑会建议从嵌套对象“继承”也将允许它们嵌套 - 不是这样。

--

使固定

对于您的id 5,您应该将该ancestry列设为此值:

$ rails c
$ comment = Comment.find 5
$ comment.update(ancestry: "3/4")

--

部分的

如果您想在视图中显示嵌套的类别数组,我们使用以下代码:

在此处输入图像描述

#app/views/elements/_category.html.erb
<!-- Categories -->
<ol class="categories">
    <% collection.arrange.each do |category, sub_item| %>
        <li>
            <!-- Category -->
            <%= category.title %>

            <!-- Children -->
            <% if category.has_children? %>
                <%= render partial: "category", locals: { collection: category.children } %>
            <% end %>

        </li>
    <% end %>
</ol>


#app/views/application/index.html.erb
<%= render partial: "category", locals: { collection: Category.all } %>
于 2014-06-18T08:12:46.417 回答