由于最近学习用到这个东西,所以记录下来,供以后参考
主要功能是利用acts_as_tree和XTree来实现动态树状目录结构
1,关于XTREE
下载:你可以在网上搜索一下,或者直接去官方网站下载其最新版本。
怎样应用到你的项目里面去(基于ROR,其它的web项目大同小异吧)
最简单的就是你把xtree.js拷贝到public/javascripts/下面,把xtree.css拷贝到public/stylesheets/下面。这两个文件足够了,还有一个关于检查的js文件自己研究吧。在你的需要的视图页面里面加入一下两句
<script type="text/javascript" src="/javascripts/xtree.js">
<link type="text/css" rel="stylesheet" href="/stylesheets/xtree.css">
然后是这两个文件依赖于xtree/images里面的图片。我的处理方法如下,把xtree/images里面的所有图片拷贝到项目文件夹下的public/images里面去,然后修改xtree.js将images指向了根目录public/
var webFXTreeConfig = {
rootIcon : '/images/foldericon.png', //images前面本来没有斜杆/
openRootIcon : '/images/openfoldericon.png',//images前面本来没有斜杆/
folderIcon : '/images/foldericon.png',//images前面本来没有斜杆/
openFolderIcon : '/images/openfoldericon.png',//images前面本来没有斜杆/
fileIcon : '/images/file.png',//images前面本来没有斜杆/
iIcon : '/images/I.png',//images前面本来没有斜杆/
lIcon : '/images/L.png',//images前面本来没有斜杆/
lMinusIcon : '/images/Lminus.png',//images前面本来没有斜杆/
lPlusIcon : '/images/Lplus.png',//images前面本来没有斜杆/
tIcon : '/images/T.png',//images前面本来没有斜杆/
tMinusIcon : '/images/Tminus.png',//images前面本来没有斜杆/
tPlusIcon : '/images/Tplus.png',//images前面本来没有斜杆/
blankIcon : '/images/blank.png',//images前面本来没有斜杆/
defaultText : 'Tree Item',
defaultAction : 'javascript:void(0);',
defaultBehavior : 'classic',
usePersistence : true
};
以上几步完成后你就可以正常使用xtree了。你可以把下面的代码粘贴到一个视图文件中去,然后测试看能否正常工作。
-------------demo.rhtml--------------------------------
var tree = new WebFXTree('Root');
tree.add(new WebFXTreeItem('Tree Item 1'));
tree.add(new WebFXTreeItem('Tree Item 2'));
tree.add(new WebFXTreeItem('Tree Item 3'));
document.write(tree);
-----------------------------------------------------------
这个是帮助文档里面的例子
图片如下
tree1
关于acts_as_tree
把一个简单的acts_as_tree的例子贴在下面
用到的资源:
http://svn.rubyonrails.org/rails/plugins/
把下面的acts_as_tree文件夹整体下下来,待用
1,建立项目aat
2,安装插件
把文件夹acts_as_tree整体拷贝到att/vendor/plugins/目录下(我是直接在控制台下用ruby script/plugin install acts_as_tree实现的)
3,创建 category 表,使用 acts_as_tree
script/generate model category
在migration中class CreateCategories < ActiveRecord::Migration
def self.up
create_table :categories do |t|
t.column :name,:string
t.column :parent_id,:integer
#t.timestamps
end
end
def self.down
drop_table :categories
end
end
4,rake db:migrate 生成 category 表。
5,在model中声明 acts_as_tree:
class Category < ActiveRecord::Base
acts_as_tree
end
6,在数据库上插入示例数据。其中几项的 parent_id 指向表中的其它记录(注:ruby下自动为数据表生成的id就是数据项的id,parent_id将会与id关联)。
7,生成试图文件 test.rhtml
控制器的生成不用介绍了吧)
hello
<% top = Category.find_by_parent_id(nil) %>
<%top.children.each do |child| %>
<%= child.parent.name + " is my parent. I am " + child.name + "<br>"%>
<% end %>
over
8,调试运行
如果你看到something valuable,那么恭喜你,你离成功仅一步之遥了。
动态目录树视图生成
在前面的基础上我们把test.rhtml的代码修改如下:
-------------------test.rhtml-----------------------------
<html>
<head>
<script type="text/javascript" src="/javascripts/xtree.js"></script>
<link type="text/css" rel='stylesheet' href="/stylesheets/xtree.css" />
<script type="text/javascript" language="javascript">
</script>
</head>
<body>
<script>
if (document.getElementById) {
<%
def revTree(node,parent)
tree="var tree#{node.id} = new WebFXTreeItem(\"#{node.name}\");\n"
node.children.each do|child|
tree << revTree(child,"tree#{node.id}")
end
tree << parent + ".add(tree#{node.id});\n"
return tree;
end
%>
var treeroot = new WebFXTree("root");
treeroot.setBehavior('classic');
<%= revTree(Category.find_by_parent_id(nil),"treeroot")%>
document.write(treeroot);
}
</script>
</body>
</html>
------------------------------------------------------------------
注意在数据库中插入几条数据。
运行上面的文件,你会看到一个动态的目录结构
数据库数据
分享到:
相关推荐
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
四大类垃圾,有害垃圾、可回收垃圾、厨余垃圾、其他垃圾,共四千张左右,包含小米电池等不寻常的垃圾,适用于2025工程实践与创新能力大赛。
ASP.NET在线培训考试系统源码 1、增加错题卡功能 2、升级html功能 3、系统代码,数据库,数据库存储过程等,都无任何加密,是全部源码。 4、优化升级版本,界面更美观。 一、技术特点: 1、系统基于微软先进的.Net平台,100%纯B/S架构模式,系统部署、维护方便,具有良好的开放性、伸缩性和可扩展性 2、系统试卷分为考试模式和作业模式,考试模式自动计时,作业模式不计时,可用于平常作业或练习;试卷出题方式可采用题序固定、题序随机或试题随机模式;试卷显示方式分为整卷模式和逐题模式;试题随机和逐题模式可有效防止作弊; 3、支持自定义题型功能,系统提供单选类、多选类、判断类、填空类、问答类、作文类、打字类和操作类等八大类基本题型,其中操作类试题提供了文件下载和上传功能,轻松实现Word、Excel、FrontPage、Visual Foxpro等对文件或文件夹的操作; 4、系统可对试题的科目、知识点、题型、难度、分数、试题内容和试题解析等属性进行设置,单选类、多选类试题支持6个选项,完全可以满足当前试题要求,少于6个选项,
onnxruntime-1.15.1-cp310-cp310-win_amd64.whl
numpy-1.16.0-cp35-cp35m-linux_armv7l.whl
AI视频数据集(交通路口摄像头视频)
java源码资源EJB中JNDI的使用源码例子提取方式是百度网盘分享地址
scipy-1.12.0-cp311-cp311-linux_armv7l.whl
numpy-1.21.1-cp37-cp37m-linux_armv7l.whl
ta_lib-0.5.1-cp313-cp313-win32.whl
基于springboot的学生服务平台源码数据库文档微信小程序.zip
基于springboot旅游管理系统源码数据库文档.zip
PDF电子发票信息提取,支持将pdf发票文件夹下的剩所有发票,转为excel格式的信息,对于发票量比较大,不好统计,需要一个一个去统计的情况,可节省2个点以上的时间,一次下载,终身有效。
Pillow-7.2.0-cp37-cp37m-linux_armv7l.whl
基于springboot的银行信用卡额度管理系统源码数据库文档.zip
基于JavaScript的在线考试系统源码数据库文档.zip
Pillow-7.1.0-cp311-cp311-linux_armv7l.whl
基于SpringBoot装修公司管理平台源码数据库文档.zip
onnxruntime-1.17.0-cp311-cp311-win_amd64.whl
numpy-1.22.2-cp311-cp311-linux_armv7l.whl