今天花了一小段时间写了个基于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
- 浏览 8119
- 评论(5)
- 论坛回复 / 浏览 (2 / 10819)
- 查看更多
相关推荐
phrasing, 为你的Ruby on Rails 应用程序内联编辑短语 ! 语法 ! 短语是网站中实时编辑短语( 副本)的gem 。Phrasing目前正在对主要更新的发布候选内容进行迭代: 4.0.这些版本的自述文件可以在这里找到 "安装在你的...
Rails-Mini-Social-Network用Rails创建的迷你社交网络! 不再维护。 其他版本React版本Vue版本Golang版本快速链接屏幕截图用法Scree Rails-Mini-Social-Network一个由Rails创建的迷你社交网络! 不再维护。 另一个...
**标题解析:** "使用Mina轻松部署Rails(而且确实非常快!)" 这个标题指出,我们将探讨如何利用Mina工具高效且迅速地部署Ruby on Rails应用。Mina是一个轻量级、基于任务的部署工具,它允许开发者以SSH协议在远程...
赶时髦的人的Rails版本API解决方案模板! 版本3.1.0 目录 先决条件 项目设置 为了进行生产,您需要在./config/initializers/cors.rb文件中用客户端应用程序的URL替换星号。 克隆或下载此仓库 运行bundle install ...
捆绑安装并重新启动服务器,以使文件可通过管道使用。 在app / assets / stylesheets / application.scss中导入Bootstrap(Honoka)样式: $ mv app/assets/stylesheets/application.css app/assets/sty
通过警告,颜色编码,自动沙盒以及允许只读外部连接(禁用作业排队,非GET请求等),此宝石使Rails控制台会话在指定环境中的危险性降低。 安装 将此行添加到您的应用程序的Gemfile中: gem 'safer_rails_console'...
- 安装Rails: 使用gem工具安装最新的Rails版本。 - 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: -...
在本文中,我们将深入探讨如何使用Ruby on Rails(Rails)框架构建一个简历系统。Rails是一个流行的Web应用程序开发框架,它遵循MVC(模型-视图-控制器)架构模式,简化了开发过程。以下是对标题和描述中涉及的关键...
注入一些SQL 这些是示例Rails应用程序,用于演示可以在Rails中注入SQL的多种方式。建立克隆仓库: git clone https://github.com/presidentbeef/inject-some-sql.git选择Rails 5,Rails 4或Rails3。它们每个都有自己...
在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...
实例的源代码 博文链接:https://babo.iteye.com/blog/72298
使用它来连接您现有的用户身份验证系统以使用Phrasing。 例如: module PhrasingHelper def can_edit_phrases? current_user . is_admin? endend 在应用程序布局文件中<body>标记的正下方包括短语html初始
2. 创建资源:使用`rails generate controller Posts`生成控制器,再用`rails generate scaffold Post title:string content:text`生成模型和相关的控制器、视图及路由。 3. 迁移数据库:编写迁移文件,更新数据库表...
1. **生成资源(Generating Resources)**:使用`rails generate`命令可以快速创建模型、控制器、视图等文件,如`rails generate scaffold Post title:string content:text`会生成一个名为Post的资源,包含相关的...
您可能想要涵盖的内容: Ruby版系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列、缓存服务器、搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用不同的标记语言。系统环境, ...
自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) ...