Жемчужина предков в Rails и Mutli Nesting

Я использую драгоценный камень предков в рельсах для вложения некоторых комментариев, и я хотел, чтобы вы могли получить все комментарии, а затем вложить их все. Как бы то ни было, когда я помещаю: @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":[

         ]
      }
   ]
}

Совершенно очевидно, что комментарий с id: 5 должен находиться в массиве children, который находится в комментарии id: 4, который ЯВЛЯЕТСЯ вложенным в комментарий с id: 3.

Может кто-нибудь сказать мне, почему arrange_serializable не комментирует "множественные вложения"? или если есть другая функция для этого.


person user3379926    schedule 17.06.2014    source источник


Ответы (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 } %>
person Richard Peck    schedule 18.06.2014