0

我正在使用带有名为 MenuHeader 的模型的祖先 gem

class MenuHeader < ActiveRecord::Base
    has_ancestry

例如这个数据模型

id name          ancestry position
1  MenuHeader#1  NULL     1 
2  MenuHeader#2  1        1 
3  MenuHeader#3  1/2      2 
4  MenuHeader#4  1/2      1 

有了这个表示:

1. MenuHeader#1
  2. MenuHeader#2   
      4. MenuHeader#4 position 1
      3. MenuHeader#3 poition 2

查看https://github.com/stefankroes/ancestry上的 README ;目前尚不清楚我将如何实现这一目标或这是否可能?我试着在上面放一个范围,但似乎没有用。好像

<% menu_header.children.is_not_deleted.each do |menu_header|  %>
  <%= render 'menus/ancestry/menu_header_form', menu_header: menu_header %>
<% end %>

想成为:

<% menu_header.sorted_children.is_not_deleted.each do |menu_header|  %>
  <%= render 'menus/ancestry/menu_header_form', menu_header: menu_header %>
<% end %>

但不知道该怎么做。关于如何实现这一目标的任何想法?

编辑#1 我见过这个:

Note that since materialised path trees don’t support ordering within a rank, the order of siblings depends on their order in the original array.

在排序的讨论中,但似乎我应该能够将 lambda 传递给应该如何排序。

4

1 回答 1

1

我使用acts_as_list 加上祖先来对我的节点进行排序

https://github.com/swanandp/acts_as_list

于 2014-03-26T12:37:56.793 回答