今天花了一小段时间写了个基于Rails和xtree的树形例子,还有很多地方需要完善,并且代码比较乱!
Migrate类
- class CreateCategories < ActiveRecord::Migration
- def self.up
- create_table "categories", :force => true do |t|
- t.column "name", :string
- t.column "created_at", :datetime
- t.column "parent_id", :integer, :default => 0, :null => false
- end
- %w(item1 item2 item3 item4 item5).each do |name|
- parent = Item.new(:name=>name)
- parent.save
- Item.create(:name=>name+".1", :parent_id=>parent.id)
- Item.create(:name=>name+".2", :parent_id=>parent.id)
- Item.create(:name=>name+".3", :parent_id=>parent.id)
- end
- end
-
- def self.down
- drop_table :categories
- end
- end
表结构
- CREATE TABLE categories (
- id int(11) NOT NULL PRIMARY KEY,
- name varchar(50),
- parent_id int(11)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='类别表';
控制类
- class CategoryController < ApplicationController
- def index
- @categories = Category.roots
- end
- end
Helper类
- module CategoryHelper
- def get_tree(trees, parent)
- tree_html = "";
- trees.each do |tree|
- if tree.is_root?
- tree_html += "var tree_#{tree.id} = new WebFXTreeItem('#{tree.name}');\r\n"
- tree_html += "rootTree.add(tree_#{tree.id});\r\n"
- end
-
- if !tree.is_leaf?
- if !tree.is_root?
- tree_html += "var tree_#{tree.id} = new WebFXTreeItem('#{tree.name}');\r\n"
- tree_html += "tree_#{parent.id}.add(tree_#{tree.id});\r\n"
- end
- tree_html += get_tree(tree.children, tree)
- else
- tree_html += "var tree_#{tree.id} = new WebFXTreeItem('#{tree.name}');\r\n"
- if !parent.nil?
- tree_html += "tree_#{parent.id}.add(tree_#{tree.id});\r\n"
- end
- end
- end
- return tree_html
- end
- end
模型类category.rb
- class Category < ActiveRecord::Base
- acts_as_tree
- validates_presence_of :name
-
- def self.roots
- self.find(:all, :conditions=>["parent_id = ?", 0])
- end
-
- def is_leaf?
- return !self.has_children?
- end
-
- def is_root?
- return self.parent_id == 0
- end
- end
视图文件
- <html>
- <head>
- <title>tree</title>
- <script type="text/javascript" src="/javascripts/xtree.js"></script>
- <script type="text/javascript" src="/javascripts/xloadtree.js"></script>
-
- <link type="text/css" rel="stylesheet" href="/stylesheets/xtree.css" />
- </head>
-
- <body>
- <script type="text/javascript">
- var rootTree = new WebFXTree('Root');
- <%= get_tree(@categories, nil)%>
- document.write(rootTree);
- </script>
- </body>
- </html>
效果图如下:
注意:需要将xtree组件的xtree.js xtree2.js xloadtree.js拷贝到javascripts目录,把xtree组件里images
目录下的文件拷贝到rails下的public/images目录下,把xtree组件里的xtree.css拷贝到rails下的stylesheets
目录下!
分享到:
- 2006-12-26 20:00
- 浏览 8086
- 评论(5)
- 论坛回复 / 浏览 (2 / 10787)
- 查看更多
相关推荐
phrasing, 为你的Ruby on Rails 应用程序内联编辑短语 ! 语法 ! 短语是网站中实时编辑短语( 副本)的gem 。Phrasing目前正在对主要更新的发布候选内容进行迭代: 4.0.这些版本的自述文件可以在这里找到 "安装在你的...
Rails-Mini-Social-Network用Rails创建的迷你社交网络! 不再维护。 其他版本React版本Vue版本Golang版本快速链接屏幕截图用法Scree Rails-Mini-Social-Network一个由Rails创建的迷你社交网络! 不再维护。 另一个...
赶时髦的人的Rails版本API解决方案模板! 版本3.1.0 目录 先决条件 项目设置 为了进行生产,您需要在./config/initializers/cors.rb文件中用客户端应用程序的URL替换星号。 克隆或下载此仓库 运行bundle install ...
字体配制文件 博文链接:https://babo.iteye.com/blog/72298
使用Mina可以快速,轻松地部署Ruby on Rails应用程序。
捆绑安装并重新启动服务器,以使文件可通过管道使用。 在app / assets / stylesheets / application.scss中导入Bootstrap(Honoka)样式: $ mv app/assets/stylesheets/application.css app/assets/sty
通过警告,颜色编码,自动沙盒以及允许只读外部连接(禁用作业排队,非GET请求等),此宝石使Rails控制台会话在指定环境中的危险性降低。 安装 将此行添加到您的应用程序的Gemfile中: gem 'safer_rails_console'...
用rails实现的简单的简历系统,其中包括图片上传、验证码生成、数据查询、分页、日历、sort、邮件发送
注入一些SQL 这些是示例Rails应用程序,用于演示可以在Rails中注入SQL的多种方式。建立克隆仓库: git clone https://github.com/presidentbeef/inject-some-sql.git选择Rails 5,Rails 4或Rails3。它们每个都有自己...
使用它来连接您现有的用户身份验证系统以使用Phrasing。 例如: module PhrasingHelper def can_edit_phrases? current_user . is_admin? endend 在应用程序布局文件中<body>标记的正下方包括短语html初始
您可能想要涵盖的内容: Ruby版系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列、缓存服务器、搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用不同的标记语言。系统环境, ...
自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) ...
by Edward Benson 很好的一本描述ruby和Rails的书,生动简要!
botstack, 使用 Ruby on Rails 实现快速聊天 botstack 这是创建 FB Chatbots的基础项目。 它拥有一个状态机和用户管理,允许你使用模块添加功能。快速入门将所有逻辑放入 lib/bot 。 我们已经准备好一切为你的项目做...
RUBY RAILS INSTALLRUBY RAILS INSTALLRUBY RAILS INSTALL The Best Ruby Rails Server!
Knock - 为Rails API实现无缝JWT身份验证