因为自已只用到两层的树。所以可能功能不是很完善。。
把代码贴出来让大伙瞅瞅。
def getmenulist
menustring="["
lv1list=Menu.find_by_sql("select * from menus where menuid=leve")
lv2list=Menu.find_by_sql("select * from menus where menuid!=leve")
for items in lv1list
menustring+="{text:\""+items.name+"\",id:"+rand().to_s+",singleClickExpand:true,cls : \"file\",leaf:false,children:["
childer=""
for temp in lv2list
if temp.leve==items.menuid:
childer+="{text:\""+temp.name+"\",id:\""+temp.link+"\",cls : \"file\",leaf:true},"
end
end
menustring+=childer+"]},"
end
menustring+="]"
menustring=menustring.gsub(",]","]")
render(:text => menustring)
end
下面是原来用DJANGO的时侯设计的数据库。
class menu (models.Model):
id = models.AutoField('ID', primary_key=True)
#menuid
menuid=models.IntegerField()
#名称
name=models.CharField(max_length=100)
#链接
link=models.CharField(max_length=100)
#菜单层 如果这一层等于MENUID的话菜单说明属于MENUID那一层的菜单。如果MENUDID=LEVE的话说明是第一级菜单
leve=models.IntegerField()