rails+coffeescript+zTree
1.新建rails项目Ztree(rails new Ztree)
2.gemfile中添加ztree的引用
#jquery树插件
gem 'jquery-ztree-rails'
3.application.js和application.css中添加//= require ztree.all
*= require ztree
4.使用scaffold生成person的crud(ctrl+alt+g -> scaffold)
Person name:string parent:references sex:integer age:integer phone:string address:string isleaf:boolean
5.在people_controller添加people_tree方法和修改person_params方法 def people_tree
@people = nil
if params[:id] == nil
@people = Person.select("id,name,parent_id").where("parent_id is null")
else
@people = Person.select("id,name,parent_id").where("parent_id = ?", params[:id])
end
if @people.length > 0
@people.each do |person|
person.isleaf = false
if Person.where("parent_id = ?", person.id).count > 0
person.isleaf = true
end
end
end
render 'tree'
end
# Never trust parameters from the scary internet, only allow the white list through.
def person_params
params.require(:person).permit(:name, :parent_id, :age, :sex, :phone, :address, :isleaf)
end
6.新建tree.json.jbuilder文件,将对象解析成json数据供ztree使用json.array!(@people) do |person|
json.id person.id
json.parent_id person.parent_id
json.name person.name
json.isParent person.isleaf
end
7.在index.html.erb文件中添加<div id="treeDemo" class="ztree"></div>
<%= javascript_include_tag "tree" %>
8.新建coffeescript文件tree.coffee$ = jQuery
zTreeNodes = null;
zTreeObj = null;
#浏览器报错cannot resolve symbol 'msie' 解决方法
jQuery.browser = {}
$ ->
jQuery.browser.msie = false
jQuery.browser.version = 0
if(navigator.userAgent.match(/MSIE ([0-9]+)\./))
jQuery.browser.msie = true
jQuery.browser.version = RegExp.$1
#ztree设置
setting = {
async: {
enable:true, #异步加载可用
dataType: "json", #接收json数据
type: "get", #使用get请求
url: "/people/people_tree.json", #请求url
autoParam: ["id"] #异步加载是请求的参数
},
check: {
enable: true #checkbox可用
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "parent_id",
rootKey: "0"
}
},
view: {
dbClickExpand: false, #双击展开不可用
showLine: false #不显示下划线
},
edit: {
enable: true, #可编辑
showRemoveBtn: true, #显示删除图标
showRenameBtn: true, #显示编辑图标
removeTitle: "删除节点",
renameTitle: "编辑名称"
},
callback: {
onAsyncSuccess: zTreeOnAsyncSuccess #请求成功后的回调函数
}
}
zTreeOnAsyncSuccess = (event, treeId, treeNode, data) ->
zTreeNodes = data
zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, zTreeNodes);
9.效果
10.需要更多功能,请参考ztree官方文档
http://www.ztree.me/v3/main.php
11.源码下载地址
Ztree点此下载
分享到:
相关推荐
critical-path-css-rails, 在 Rails 中,只加载初始viewport所需的CSS ! critical-path-css-rails ...这个 gem 让你只需要在初始页面视图中加载所需的CSS 。 这给你 blazin'快速渲染,因为没有初始的网络调用来抓取你
asset_hat, 在 Rails 中,快速加载CSS和 JS 你的资产被覆盖 AssetHat快速加载CSS和 JS 。 你的资产被覆盖。当首次请求该包时,使用 Rails'默认的资源缓存,CSS和JS连接( 而不是缩小) 。 不够好为了使你的页面加载更...
Spring是Rails的预加载器。Spring 能够通过保持应用运行在后台,来提升开发模式下的速度。使得不需要在执行test,rake task以及migration时每次都加载。 标签:Spring
async-rails, 异步 Rails 3堆栈演示 异步 Rails 3.1堆栈演示重要警告:当你使用 Rails 时,应该注意到当堆栈增长时,你可以得到堆栈溢出错误超过 4Kb ( 但对于大多数情况来说),随着 3.1版本的增加,这变得更加糟糕...
14. **AJAX和Unobtrusive JavaScript (UJS)**:Rails支持无侵入式JavaScript,通过数据属性和事件监听,使页面的部分内容能够异步更新,增强用户体验。 15. **ActiveJob**:Rails 4.2引入的ActiveJob是一个抽象层,...
按localhost:3000 / twitter加载已安装的异步Sinatra应用程序(报告最新的Rails 3条推文) Howto /示例提交: 修改您的config.ru以包括Rack :: FiberPool中间件: 配置ActiveRecord以使用异
9. **ActiveJob**:Rails的后台任务处理框架,可以配合各种队列服务(如Resque、Sidekiq等)处理异步任务。 10. **Rails Console**:提供了一个交互式的命令行工具,用于检查和调试应用,执行Ruby代码,以及与...
这种方式是Rails的Asset Pipeline所支持的,它能有效地管理前端资源,提高加载速度。 接下来,我们需要在HTML视图中创建一个日期输入字段。在Rails中,这通常是通过`<%= f.date_field :date_field_name %>`这样的...
4. **ActiveRecord**:这是Rails中的ORM(对象关系映射)库,它允许开发者用Ruby代码操作数据库,无需编写SQL。 5. **Scaffolding**:Rails的快速开发工具,能自动生成CRUD(创建、读取、更新、删除)操作的模型、...
在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...
仅在Rails中加载初始视口所需CSS! 这种宝石让你只加载您需要的初始页面视图中CSS的能力。 由于没有最初的网络调用来获取您应用程序CSS,因此可以让您快速发展。 此gem假定您将异步加载其余CSS。 目前,建议的...
安装过程中,遵循提示进行,确保选择自定义安装并勾选Rails相关的插件,以便在Aptana中获得对Rails的全面支持。 安装完成后,打开Aptana Studio,创建一个新的Rails项目。在“File”菜单中选择“New”然后点击...
1. 在Rails视图中,使用`= javascript_pack_tag 'application'`来加载主JS包。 2. 使用`= stylesheet_pack_tag 'application'`加载CSS包。 3. 可以通过`javascript_pack_tag`动态加载特定的JS包,提高页面加载速度。...
在Rails开发中,分页是常见的功能,用于处理大量数据并优化用户体验。当我们从数据库查询数据时,一次性加载所有记录可能会导致性能问题,尤其是当数据量庞大时。因此,分页成为了解决这一问题的关键技术。这篇关于...
Active Job是一个用于在Rails应用中异步处理作业的接口,它抽象了不同的队列后端,并允许开发者编写一次作业,然后在不同的环境中执行,比如使用延迟队列或后台队列。Action Mailer是Rails提供的一个发送电子邮件的...
此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...
总的来说,了解和熟练掌握Rails 3.1和Cucumber-Rails 1.2.0的用法,对于任何希望在Ruby on Rails环境中进行高效、高质量开发的团队来说都是至关重要的。通过阅读相关的博客文章(如给出的链接),开发者可以深入学习...
rails-assets, 在 Rails 中,资产管理的解决 Rails 资产 Bundler 到 Bower 代理本自述文件涉及项目的开发方面。 访问站点了解如何在你的应用程序中使用 Rails 资产。 插件开发设置git clone git@github.com:tenex/r
这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...