rails集成extjs
原文见:http://extjs.com/tutorial/using-ext-grid-ruby-rails
E文好的就直接看吧。
- 下载extjs,将需要的文件放到对应的文件夹(具体需要的文件见第二步的列表)
- 在layout中加入javascript引用
java 代码
- <%= stylesheet_link_tag "../javascripts/ext/resources/css/ext-all.css" %>
- <%= javascript_include_tag "ext/adapter/prototype/prototype.js" %>
- <%= javascript_include_tag "ext/adapter/prototype/scriptaculous.js" %>
- <%= javascript_include_tag "ext/adapter/prototype/effects.js" %>
- <%= javascript_include_tag "ext/adapter/prototype/ext-prototype-adapter.js" %>
- <%= javascript_include_tag "ext/ext-all-debug.js" %>
- <%= yield %>
- 在view中增加显示grid的div
java 代码
- <%= javascript_include_tag "grid-paging.js" %>
- <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 代码
- var grid;
- var ds;
-
- Ext.onReady(function(){
- init_grid();
- });
-
- function init_grid() {
- ds = new Ext.data.Store({
- proxy: new Ext.data.HttpProxy({url: '/movie/grid_data'}),
-
- reader: new Ext.data.JsonReader({
- root: 'Movies',
- totalProperty: 'Total',
- id: 'id'
- }, [
- {name: 'title', mapping: 'title'},
- {name: 'plot', mapping: 'plot'},
- {name: 'release_year', mapping: 'date'},
- {name: 'genre', mapping: 'genre'},
- {name: 'mpaa', mapping: 'mpaa'},
- {name: 'directed_by', mapping: 'directed_by'}
- ]),
-
- remoteSort: true
- });
-
- var cm = new Ext.grid.ColumnModel
- ([{
- id: 'title',
- header: "Title",
- dataIndex: 'title',
- width: 250
- },{
- header: "Release Year",
- dataIndex: 'release_year',
- width: 75
- },{
- header: "MPAA Rating",
- dataIndex: 'mpaa',
- width: 75
- },{
- header: "Genre",
- dataIndex: 'genre',
- width: 100
- },{
- header: "Director",
- dataIndex: 'directed_by',
- width: 150
- }]);
-
- cm.defaultSortable = true;
-
- grid = new Ext.grid.Grid('movies_grid', {
- ds: ds,
- cm: cm,
- selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),
- autoExpandColumn: 'title'
- });
-
- grid.render();
- ds.load({params:{start:0, limit:20}});
- }
5.实现服务器端
list方法只是为了显示list.rhtml,其实也可以不写,grid_data才是真正的幕后英雄,注意其中的render方法直接返回text,不使用layout
。
java 代码
- class MovieController < ApplicationController
-
- def list
- end
-
- # Called from the list page to get the movie list data to populate the grid.
- def grid_data
- start = (params[:start] || 1).to_i
- size = (params[:limit] || 20).to_i
- sort_col = (params[:sort] || 'id')
- sort_dir = (params[:dir] || 'ASC')
-
- page = ((start/size).to_i)+1
-
- @movie_pages = Paginator.new(self, Movie.count, size, page)
-
- @movies = Movie.find(:all,
- :select => "id, title, plot, date, genre, mpaa, directed_by",
- :limit=>@movie_pages.items_per_page,
- :offset=>@movie_pages.current.offset,
- :order=>sort_col+' '+sort_dir)
-
- return_data = Hash.new()
- return_data[:Total] = @movie_pages.item_count
- return_data[:Movies] = @movies.collect{|u| {:id=>u.id,
- :title=>u.title,
- :plot=>u.plot,
- :date=>u.date,
- :genre=>u.genre,
- :mpaa=>u.mpaa,
- :directed_by=>u.directed_by} }
- render :text=>return_data.to_json, :layout=>false
- end
- end
分享到:
- 2007-09-15 13:04
- 浏览 5169
- 评论(2)
- 论坛回复 / 浏览 (2 / 5400)
- 查看更多
相关推荐
extjs-rails 这颗宝石提供: ExtJS 4.1 与 rails 资产管道完美配合安装宝石“extjs-rails” 宝石“指南针” //= require ext-all / / = require ext - all - dev定制 config . extjs_theme非常感谢用于 jquery-rails...
EXTJS的开发工具通常包括Sencha Cmd、Ruby、JavaFX Packager Installer(JXPI)和集成开发环境(IDE)。 1. **Sencha Cmd**: - Sencha Cmd是EXTJS的主要命令行工具,用于自动化EXTJS项目构建过程,包括创建应用、...
4. **LaraExtjs 结合**:LaraExtjs项目将Laravel与Sencha ExtJS库集成,ExtJS是一个强大的JavaScript组件库,用于构建富客户端的桌面级Web应用。通过LaraExtjs,开发者可以在后端使用Laravel处理业务逻辑,前端利用...
4. **应用接口工具和技术**:集成了多种前端技术和库,如SlickGrid、jQuery UI等,以增强用户体验。 5. **基于JSON通信格式**:所有的数据交互都采用JSON格式,便于前后端分离。 #### 架构概述: Wulin Master框架...
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 ...
19. Ruby on Rails:Ruby on Rails是一个流行的Web开发框架,文中探讨了其在企业开发、嵌入式开发中的应用,以及工作流实现。 20. AJAX技术:包括ExtJS基础教程和jQuery图片循环效果,展示了AJAX如何提升用户体验。...
**ExtCore for NodeJS** 提供了 ExtCore 和 ExtJS 中的一些基本技巧,如 XTemplate 和 Ext.util.format。这些功能可以帮助开发者快速构建美观且交互性强的用户界面。 #### 二十、Flatiron **Flatiron** 是一个适应...
Prototype常被用于构建复杂的Web应用程序,如Ruby on Rails框架就默认集成了Prototype,用于提供丰富的客户端交互。同时,它也是其他JavaScript库和框架,如jQuery和ExtJS的基础灵感来源。 总结,Prototype.js是...
"Java完美编程(第三版)"、"ExtJS 2.0实用简明教程"和"struts2+spring2.0+hibernate3.0"覆盖了更多框架和技术。 "Thinking In Java 4th"是Bruce Eckel的另一本杰作,深入解析了Java编程的各个方面。"Spring ...