`
leondu
  • 浏览: 114778 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

rails集成extjs

    博客分类:
  • RoR
阅读更多
rails集成extjs


原文见:http://extjs.com/tutorial/using-ext-grid-ruby-rails
E文好的就直接看吧。

  1. 下载extjs,将需要的文件放到对应的文件夹(具体需要的文件见第二步的列表)
  2. 在layout中加入javascript引用

    java 代码

    1.         <%= stylesheet_link_tag "../javascripts/ext/resources/css/ext-all.css" %>  
    2.         <%= javascript_include_tag "ext/adapter/prototype/prototype.js" %>  
    3.         <%= javascript_include_tag "ext/adapter/prototype/scriptaculous.js" %>  
    4.         <%= javascript_include_tag "ext/adapter/prototype/effects.js" %>  
    5.         <%= javascript_include_tag "ext/adapter/prototype/ext-prototype-adapter.js" %>  
    6.         <%= javascript_include_tag "ext/ext-all-debug.js" %>  
    7.         <%= yield %>                 

  3. 在view中增加显示grid的div
    java 代码
     
    1. <%= javascript_include_tag "grid-paging.js" %>  
    2. <div id="movies_grid" style="border:5px solid #99bbe8; overflow:hidden; width:650px;"></div>  
4.使用javascript搭建一个grid
url: '/movie/grid_data' 指定了数据源
  • Ext.grid.Grid('movies_grid'... 则指定了grid出现在哪个div中。

    java 代码
     
    1. var grid;  
    2. var ds;  
    3.   
    4. Ext.onReady(function(){  
    5.     init_grid();     
    6. });  
    7.   
    8. function init_grid() {  
    9.     ds = new Ext.data.Store({  
    10.         proxy: new Ext.data.HttpProxy({url: '/movie/grid_data'}),  
    11.           
    12.         reader: new Ext.data.JsonReader({  
    13.             root: 'Movies',  
    14.             totalProperty: 'Total',  
    15.             id: 'id'  
    16.         }, [  
    17.             {name: 'title', mapping: 'title'},  
    18.             {name: 'plot', mapping: 'plot'},  
    19.             {name: 'release_year', mapping: 'date'},  
    20.             {name: 'genre', mapping: 'genre'},  
    21.             {name: 'mpaa', mapping: 'mpaa'},  
    22.             {name: 'directed_by', mapping: 'directed_by'}  
    23.         ]),          
    24.         // turn on remote sorting  
    25.         remoteSort: true      
    26.     });  
    27.   
    28.     var cm = new Ext.grid.ColumnModel  
    29.         ([{  
    30.            id: 'title',  
    31.            header: "Title",  
    32.            dataIndex: 'title',  
    33.            width: 250  
    34.         },{  
    35.            header: "Release Year",  
    36.            dataIndex: 'release_year',  
    37.            width: 75  
    38.         },{    
    39.            header: "MPAA Rating",  
    40.            dataIndex: 'mpaa',  
    41.            width: 75  
    42.         },{    
    43.            header: "Genre",  
    44.            dataIndex: 'genre',  
    45.            width: 100  
    46.         },{    
    47.            header: "Director",  
    48.            dataIndex: 'directed_by',  
    49.            width: 150  
    50.         }]);  
    51.           
    52.     cm.defaultSortable = true;  
    53.   
    54.     grid = new Ext.grid.Grid('movies_grid', {  
    55.         ds: ds,  
    56.         cm: cm,  
    57.         selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),  
    58.         autoExpandColumn: 'title'  
    59.     });  
    60.   
    61.     grid.render();      
    62.     ds.load({params:{start:0, limit:20}});    
    63. }  
     
  • 5.实现服务器端
  • list方法只是为了显示list.rhtml,其实也可以不写,grid_data才是真正的幕后英雄,注意其中的render方法直接返回text,不使用layout
    java 代码
     
    1. class MovieController < ApplicationController  
    2.       
    3.     def list  
    4.     end   
    5.       
    6.     # Called from the list page to get the movie list data to populate the grid.  
    7.     def grid_data  
    8.         start = (params[:start] || 1).to_i        
    9.         size = (params[:limit] || 20).to_i   
    10.         sort_col = (params[:sort] || 'id')  
    11.         sort_dir = (params[:dir] || 'ASC')  
    12.           
    13.         page = ((start/size).to_i)+1  
    14.       
    15.         @movie_pages = Paginator.new(self, Movie.count, size, page)      
    16.   
    17.         @movies = Movie.find(:all,   
    18.                              :select => "id, title, plot, date, genre, mpaa, directed_by",   
    19.                              :limit=>@movie_pages.items_per_page,  
    20.                              :offset=>@movie_pages.current.offset,   
    21.                              :order=>sort_col+' '+sort_dir)  
    22.     
    23.         return_data = Hash.new()        
    24.         return_data[:Total] = @movie_pages.item_count        
    25.         return_data[:Movies] = @movies.collect{|u| {:id=>u.id,   
    26.                                             :title=>u.title,  
    27.                                             :plot=>u.plot,   
    28.                                             :date=>u.date,   
    29.                                             :genre=>u.genre,   
    30.                                             :mpaa=>u.mpaa,   
    31.                                             :directed_by=>u.directed_by} }        
    32.         render :text=>return_data.to_json, :layout=>false  
    33.     end  
    34. end  

  • 分享到:
    评论
    2 楼 Stainlesssteel 2007-09-19  
    还要打开 FckEditor 对safari的支持
    1 楼 leondu 2007-09-15  
    robbin,je3中一定要改进一下编辑器,灌水还没什么,一旦贴代码,实在是太.......难用了。

    相关推荐

      extjs-rails:ExtJS gem rails assets pipline 集成 gem

      extjs-rails 这颗宝石提供: ExtJS 4.1 与 rails 资产管道完美配合安装宝石“extjs-rails” 宝石“指南针” //= require ext-all / / = require ext - all - dev定制 config . extjs_theme非常感谢用于 jquery-rails...

      extjs 开发工具

      EXTJS的开发工具通常包括Sencha Cmd、Ruby、JavaFX Packager Installer(JXPI)和集成开发环境(IDE)。 1. **Sencha Cmd**: - Sencha Cmd是EXTJS的主要命令行工具,用于自动化EXTJS项目构建过程,包括创建应用、...

      Laravel开发-laraextjs

      4. **LaraExtjs 结合**:LaraExtjs项目将Laravel与Sencha ExtJS库集成,ExtJS是一个强大的JavaScript组件库,用于构建富客户端的桌面级Web应用。通过LaraExtjs,开发者可以在后端使用Laravel处理业务逻辑,前端利用...

      Jimmy Huang:Fight for Enterprise problems

      4. **应用接口工具和技术**:集成了多种前端技术和库,如SlickGrid、jQuery UI等,以增强用户体验。 5. **基于JSON通信格式**:所有的数据交互都采用JSON格式,便于前后端分离。 #### 架构概述: Wulin Master框架...

      Dash for Mac 2.0.2 文档查看神器 破解版

      X CodeIgniter CoffeeScript ColdFusion Common Lisp Compass Cordova Corona CSS D3.js Django Dojo Toolkit Drupal Elixir Emacs Lisp Ember.js Emmet.io Erlang Express.js Expression Engine ExtJS Flask ...

      javaeye热点阅读

      19. Ruby on Rails:Ruby on Rails是一个流行的Web开发框架,文中探讨了其在企业开发、嵌入式开发中的应用,以及工作流实现。 20. AJAX技术:包括ExtJS基础教程和jQuery图片循环效果,展示了AJAX如何提升用户体验。...

      node.js入门手册:那些最流行的web开发框架 (1).docx

      **ExtCore for NodeJS** 提供了 ExtCore 和 ExtJS 中的一些基本技巧,如 XTemplate 和 Ext.util.format。这些功能可以帮助开发者快速构建美观且交互性强的用户界面。 #### 二十、Flatiron **Flatiron** 是一个适应...

      prototype 开发应用手册,笔记,prototype.js文件下载

      Prototype常被用于构建复杂的Web应用程序,如Ruby on Rails框架就默认集成了Prototype,用于提供丰富的客户端交互。同时,它也是其他JavaScript库和框架,如jQuery和ExtJS的基础灵感来源。 总结,Prototype.js是...

      最新Java电子书.pdf

      "Java完美编程(第三版)"、"ExtJS 2.0实用简明教程"和"struts2+spring2.0+hibernate3.0"覆盖了更多框架和技术。 "Thinking In Java 4th"是Bruce Eckel的另一本杰作,深入解析了Java编程的各个方面。"Spring ...

    Global site tag (gtag.js) - Google Analytics