瞎扯淡 写了个无限分类

naitnix · 2013年05月22日 · 最后由 naitnix 回复于 2013年05月22日 · 3816 次阅读

最近尝试了下 mongoid-tree,觉得挺好用,可以实现无限级分类,顺便写了一个 helper,来帮助在页面展示分类的下拉菜单,看代码: category.rb

#coding:utf-8
class Category
  include Mongoid::Document
  include Mongoid::Tree

  field :name, type: String
  field :state, type: Integer, default: 0
  field :content, type: String


  def get_tree(tree)
    if self.root?
      tree << ["#{self.name}","#{self.id}"]
    else
      level = self.depth  #level表示当前分类是第几级分类(0代表顶级,依次类推)
      bloc = " " * level  #这里的空格是英文全角空格
      tree << [ bloc + "|--#{self.name}","#{self.id}"]
    end

    if self.children?
      self.children.each do |chi|
        chi.get_tree(tree)  
      end
    end

  end  

end

application_helper.rb

module ApplicationHelper
  def category_tree
    tree = []
    Category.roots.each do |cate|
      cate.get_tree(tree)
    end
    return tree
  end
end

_form.html.erb

<div class="control-group">
  <%= f.label :parent_id, :class => 'control-label' %>
  <div class="controls">
    <%= f.select :parent_id,category_tree,{:include_blank => '顶级分类'}%>
  </div>
</div>

效果图如下:

代码漂亮,效果图不错,顶

@huaoguo 谢谢,之所以发这个帖子是想看看大家在用 mongo-tree 的时候有没有类似的需求,以及都是怎样实现的,借此向大家学习

需要 登录 后方可回复, 如果你还没有账号请 注册新账号