我想在我正在使用的Rails应用程序中实现树状菜单(simple example of tree menu)。我不确定是使用acts_as_tree还是Ancestry。它似乎更容易使用acts_as_tree实现简单的树形菜单,然而,Ancestry更受欢迎并且定期维护。有没有人有这个想法?acts_as_tree vs树状菜单的祖先gem
回答
使用祖先。它具有更强大的查询功能,因为它实现了materialized path pattern,而不是acts_as_tree实现adjacency list。
还有其他选项,如嵌套集,但物化路径通常是最全面的。
https://communities.bmc.com/communities/docs/DOC-9902
如果您需要在数据库级别的序排序(例如分页树网,您根据在树中显示的深度遍历和缩进/ DEDENT语言预先加载的菜单),你需要要么使用递归查询,要么使用嵌套集合或嵌套间隔等可排序编码。 (也就是说,如果在内存中的排序是不是一种选择,它几乎从来没有为。)
https://github.com/collectiveidea/awesome_nested_set
https://github.com/clyfe/acts_as_nested_interval
每个人都有起伏。选择你适合你的东西。
感谢您的建议,我想我已经解决了祖先问题。现在我只需要弄清楚为什么rake db:migrate失败! – 2012-01-12 18:49:22
我已阅读本主题中的更多详细信息:https://www.chiliproject.org/boards/2/topics/314 – PhuongTT 2014-11-23 08:31:29
- 1. find_by_name祖先Gem
- 2. WordPress的菜单祖先没有给祖先类
- 3. Rails的:祖先如何使无限的菜单下拉菜单
- 4. 如何从祖先生成json树
- 5. 渴望加载祖先树多叶
- 6. 基本树概念:定义祖先
- 7. rails_admin处理祖先类别树
- 8. 递归树,印刷祖先节点
- 9. 的XPath祖先
- 10. jQuery的祖先
- 11. CSS当鼠标悬停在子菜单中,祖先菜单消失
- 12. 导轨中的树形菜单
- 13. XSLT 1.0:生成祖先菜单层次结构
- 14. 祖先结合水平没有菜单项命令工作
- 15. 做无情的祖先查询总是先返回祖先吗?
- 16. acts_as_list acts_as_tree
- 17. 从祖先
- 18. 祖先与App.addRegions
- 19. 选择祖先的属性; “../ ..”的作品,‘祖先:: <tagname>’不
- 20. 树中的节点是否被认为是自己的祖先?
- 21. 祖先与祖先或自我的区别
- 22. MPTT树菜单
- 23. 如何找到一棵树的最低共同祖先?
- 24. 在继承树中获取PHP对象的祖先
- 25. 二叉树的第一个共同祖先
- 26. 轨祖先分页
- 27. GAE - 祖先问题
- 28. 删除与祖先
- 29. WPF绑定祖先
- 30. 二叉树的最低公共祖先(不是二叉搜索树)
act_as_tree为什么会更简单?我建议你使用祖先,因为模型上只有一个分贝字段。你可能对这个http://railscasts.com/episodes/262-trees-with-ancestry – mark 2012-01-12 12:58:51
@mark感兴趣,你是对的。然而,我试图按照你提到的railscast,但我有问题[rake db:migrate](http://stackoverflow.com/questions/8828204/ancestry-dbmigrate) – 2012-01-12 13:58:53
可能不得不问另一个问题,但试试bundle exec rake db:migrate – mark 2012-01-12 14:11:57