`
暮雨风吹
  • 浏览: 16860 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

rails中的zTree异步加载

 
阅读更多

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 !.zip

    critical-path-css-rails, 在 Rails 中,只加载初始viewport所需的CSS ! critical-path-css-rails ...这个 gem 让你只需要在初始页面视图中加载所需的CSS 。 这给你 blazin'快速渲染,因为没有初始的网络调用来抓取你

    asset_hat, 在 Rails 中,快速加载CSS和 JS 你的资产被覆盖.zip

    asset_hat, 在 Rails 中,快速加载CSS和 JS 你的资产被覆盖 AssetHat快速加载CSS和 JS 。 你的资产被覆盖。当首次请求该包时,使用 Rails'默认的资源缓存,CSS和JS连接( 而不是缩小) 。 不够好为了使你的页面加载更...

    Rails预加载程序Spring-Rails.zip

    Spring是Rails的预加载器。Spring 能够通过保持应用运行在后台,来提升开发模式下的速度。使得不需要在执行test,rake task以及migration时每次都加载。 标签:Spring

    async-rails, 异步 Rails 3堆栈演示.zip

    async-rails, 异步 Rails 3堆栈演示 异步 Rails 3.1堆栈演示重要警告:当你使用 Rails 时,应该注意到当堆栈增长时,你可以得到堆栈溢出错误超过 4Kb ( 但对于大多数情况来说),随着 3.1版本的增加,这变得更加糟糕...

    Ruby on Rails中文指南

    14. **AJAX和Unobtrusive JavaScript (UJS)**:Rails支持无侵入式JavaScript,通过数据属性和事件监听,使页面的部分内容能够异步更新,增强用户体验。 15. **ActiveJob**:Rails 4.2引入的ActiveJob是一个抽象层,...

    async-rails:异步Rails 3堆栈演示

    按localhost:3000 / twitter加载已安装的异步Sinatra应用程序(报告最新的Rails 3条推文) Howto /示例提交: 修改您的config.ru以包括Rack :: FiberPool中间件: 配置ActiveRecord以使用异

    rails指南 中文版

    9. **ActiveJob**:Rails的后台任务处理框架,可以配合各种队列服务(如Resque、Sidekiq等)处理异步任务。 10. **Rails Console**:提供了一个交互式的命令行工具,用于检查和调试应用,执行Ruby代码,以及与...

    rails中使用javascript日期控件

    这种方式是Rails的Asset Pipeline所支持的,它能有效地管理前端资源,提高加载速度。 接下来,我们需要在HTML视图中创建一个日期输入字段。在Rails中,这通常是通过`&lt;%= f.date_field :date_field_name %&gt;`这样的...

    Ruby On Rails中文教材(PDF)

    4. **ActiveRecord**:这是Rails中的ORM(对象关系映射)库,它允许开发者用Ruby代码操作数据库,无需编写SQL。 5. **Scaffolding**:Rails的快速开发工具,能自动生成CRUD(创建、读取、更新、删除)操作的模型、...

    Rails 中mongrel的安装

    在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...

    critical-path-css-rails:仅在Rails中加载初始视口所需CSS!

    仅在Rails中加载初始视口所需CSS! 这种宝石让你只加载您需要的初始页面视图中CSS的能力。 由于没有最初的网络调用来获取您应用程序CSS,因此可以让您快速发展。 此gem假定您将异步加载其余CSS。 目前,建议的...

    使用Aptana+Rails开发Rails Web应用(中文)

    安装过程中,遵循提示进行,确保选择自定义安装并勾选Rails相关的插件,以便在Aptana中获得对Rails的全面支持。 安装完成后,打开Aptana Studio,创建一个新的Rails项目。在“File”菜单中选择“New”然后点击...

    Ruby-Webpacker使用Webpack在Rails中管理类似app的JavaScript模块

    1. 在Rails视图中,使用`= javascript_pack_tag 'application'`来加载主JS包。 2. 使用`= stylesheet_pack_tag 'application'`加载CSS包。 3. 可以通过`javascript_pack_tag`动态加载特定的JS包,提高页面加载速度。...

    关于rails学习中分页的示例

    在Rails开发中,分页是常见的功能,用于处理大量数据并优化用户体验。当我们从数据库查询数据时,一次性加载所有记录可能会导致性能问题,尤其是当数据量庞大时。因此,分页成为了解决这一问题的关键技术。这篇关于...

    rails-beginner-s-guide

    Active Job是一个用于在Rails应用中异步处理作业的接口,它抽象了不同的队列后端,并允许开发者编写一次作业,然后在不同的环境中执行,比如使用延迟队列或后台队列。Action Mailer是Rails提供的一个发送电子邮件的...

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

    关于rails 3.1 cucumber-rails 1.2.0

    总的来说,了解和熟练掌握Rails 3.1和Cucumber-Rails 1.2.0的用法,对于任何希望在Ruby on Rails环境中进行高效、高质量开发的团队来说都是至关重要的。通过阅读相关的博客文章(如给出的链接),开发者可以深入学习...

    rails-assets, 在 Rails 中,资产管理的解决.zip

    rails-assets, 在 Rails 中,资产管理的解决 Rails 资产 Bundler 到 Bower 代理本自述文件涉及项目的开发方面。 访问站点了解如何在你的应用程序中使用 Rails 资产。 插件开发设置git clone git@github.com:tenex/r

    Rails项目源代码

    这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...

Global site tag (gtag.js) - Google Analytics