显示一个 tree ( show a tree using ruby)

访问量: 879

尽管不喜欢递归,但是在很多情况下还是非常好用的。

一个ruby 的helper,  Sort 的结构是:

name: string,  introduction:string, parent_id: integer 

module SortsHelper
  def show_tree sorts
    result = '<ul>'
    sorts.each do |sort|
      result += "<li>#{sort.name}, #{sort.introduction}"
      result += show_tree sort.children if sort.children.present?
      result += '</li>'
    end 
    result += '</ul>'
    raw result
  end 
end

对应的helper:

# -*- encoding : utf-8 -*-
require 'rails_helper'
describe SortsHelper do
  before do
    @parent_sort = Sort.create :name => '首页'
    @child1 = Sort.create :name => 'child1', :parent_id => @parent_sort.id
    @child2 = Sort.create :name => 'child2', :parent_id => @parent_sort.id
  end 
  it 'should show_tree ' do
    sorts = [@parent_sort]

    show_tree(sorts).should == "<ul><li>首页, <ul><li>child1, </li><li>child2, </li></ul></li></ul>"
  end
end

订阅/RSS Feed

Subscribe

分类/category