ROR with AJAX support
Ruby on Rails 和AJAX这两个炙手可热的应用,相信大家都已经不再陌生。前者完全遵循MVC、约定优于配置等思想给开发人员带来了无与伦比的生产率;后者则是RIA(Rich Internet Application)的代表技术之一。
最近笔者就如何在ROR项目当中使用AJAX来增强用户体验,尤其是如何将一些成熟的AJAX框架融入ROR当中,做了一些尝试和总结。下面分别介绍一下Prototype, script.aculo.us,EXT和Streamline在Rails框架中的应用(欢迎和我探讨交流,偶在西安一家软件公司供职。MSN:josephzy@hotmail.com)
一. Prototype
prototype.js是由Sam Stephenson写的一个javascript类库,在Rails框架中得到了内在的支持。prototype.js文件默认是在public/javascripts目录下。在Rails应用中使用Prototype的步骤如下:
在rhtml页面中导入prototype.js
<%= javascript_include_tag :defaults %>
或者
<%= javascript_include_tag :prototype%>
要将 Ajax 添加到这个应用程序中,需要以下几个步骤:
1. 配置 Rails 以使用 JavaScript。
2. 更改链接来提交 JavaScript Ajax 请求,而不是仅呈现一个 HTML 链接。
3. 指定要更新的 HTML 片断。
4. 为更新的 HTML 内容准备一个位置。
5. 构建一个控制器方法,或者一个视图来呈现 Ajax 响应。
具体的例子大家可以参考Bruce Tate的跨越边界系列和<<Ajax on Rails>>
二.script.aculo.us
script.aculo.us(http://script.aculo.us)是另一个提供对Rails框架直接支持的javascript类库。它的安装和使用也很简单,从script.aculo.us的下载页面取得以下的几个js文件:prototype.js, scriptaculous.js, builder.js, effects.js, dragdrop.js, slider.js 和 controls.js,同样放在public/javascripts目录下。在header中加入
<%= javascript_include_tag : prototype%>
<%= javascript_include_tag : scriptaculous %>
默认情况下,scriptaculous.js会加载该类库所有的特性。如果你在项目中并不需要多余的特性,可以在引用的时候加以限制
<script src="scriptaculous.js?load=effects,dragdrop" type="text/javascript"></script>
这就是说,仅选用builder ,effects ,dragdrop ,controls ,slider 中的两个特性。
为节省篇幅,举一个简单的UI component通过拖拽排序的简单例子
Rhtml页面:
<ul id="list">
<% 6.times do |i| -%>
<li id="item_<%= i+1 %>" class="expand_ticket_box">Number <%= i+1 %></li>
<% end -%>
</ul>
<p id="list-info"></p>
<%= sortable_element 'list',
: update => 'list-info',
: complete => visual_effect(:highlight, 'list'),
:url => { :action => "order" } %>
Action:
def order
@order = params[:list]
render :partial => 'list'
end
_list.rhtml:
Updated order is:<%= @order.join(', ') %>.
在实际的应用中,我们可以把6.times 替换成实际的DB数据。
图1 排序前
图2 鼠标拖拽排序
三.EXT
EXT(http://extjs.com)也许是目前功能最强大,最流行的javascript框架。将EXT用于ROR,的确是一件很cool的应用。
本例是一个在可排序的表格中显示上映影片的例子,其中使用了JSON来传递数据到浏览器。
在需要显示的页面页面中,我们除了导入必要的CSS以外,还必需导入prototype.js, scriptaculous.js, effects.js, ext-prototype-adapter.js, and ext-all-debug.js。我们将以上这些必须的js文件放在public/javascripts/ext目录下。
在application.rhtml页面的head中加入如下代码:
<%= 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" %>
在视图模板list.rhtml中,我们创建一个Div,用来显示将要生成的表格。我们给该Div赋一个id 'movies_grid' 。这个id将会在随后的js代码中使用,以初始化表格信息。
视图模板 (list.rhtml)
<%= javascript_include_tag "grid-paging.js" %>
<div id="movies_grid" style="border:5px solid #99bbe8; overflow:hidden; width:650px;"></div>
接下来,我们需要编写一些javascript代码来初始化并显示Ext表格。首先创建一个js文件grid-paging.js,在其中持有将在页面显示的数据。通过调用Ext.onReady方法,表格会在页面加载的时候初始化。先创建一个Ext.data.Store对象作为client端的 data store。在这个对象中,再创建一个Ext.data.HttpProxy通知表格从什么地方取得数据。同时,制定一个JsonReader来读取数据。最后,把remoteSort设置为true,以通知store排序会在server端进行,每次当任意一个column header被点击,一个新的数据请求就会被发往server处理。
在store对象被创建后,接下来需要创建Ext.grid.ColumnMmodel对象以制定如何对表格进行布局处理。之后,设置ColumnModel的属性defaultSortable为true,这样每一次点击任意一个column header后都会进行排序操作。
最后,我们以之前创建的Store和ColumnModel对象为参数,创建Ext.grid.Grid对象。接下来就是调用Store对象的load方法显示表格。
其代码如下:
JavaScript Code (grid-paging.js)
分享到:
相关推荐
RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...
NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696
此外,标签中提到了其他Web开发技术,如AJAX(异步JavaScript和XML),它用于在不刷新整个页面的情况下更新部分内容,提升用户体验。ASP.NET、C#和J2EE/Java是RoR的主要竞争对手,它们各自有各自的优点和适用场景,...
**Ruby on Rails(简称RoR)中文资料** Ruby on Rails(RoR)是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。RoR强调“约定优于配置”...
**神经网络Ror ResNet模型详解** 在深度学习领域,ResNet(残差网络)模型是具有里程碑意义的创新,由He et al.在2015年提出。该模型解决了深度神经网络训练中的梯度消失问题,允许构建非常深的网络结构。而“Ror”...
在Ruby on Rails(ROR)开发环境中,安装和配置正确的依赖包是至关重要的。这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails...
Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...
**初探ROR** Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat ...
基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。
- **ECO和RoR集成**:除了AJAX之外,还可以将ECO和Ruby on Rails等其他技术集成到Delphi2007 for AJAX中,以构建更加丰富的Web解决方案。 - **示例演示**:通过实际的示例演示来展示如何使用这些技术来构建完整的Web...
ROR环境 Ruby version 1.9.3 (java) RubyGems version 1.8.24 Rack version 1.4 Rails version 3.2.12 JavaScript Runtime therubyrhino (Rhino) Active Record version 3.2.12 Action Pack version 3.2.12 ...
本文将详细介绍Ajax在Ruby on Rails(简称ROR或RoR)框架中的应用。 #### Ajax简介 Ajax是一种用于创建快速且动态网页的应用程序方法。它可以在不重新加载整个页面的情况下,通过后台加载数据,并更新部分页面内容...
### Windows上搭建Ruby on Rails(ROR)环境详解 #### 一、引言 随着Web开发技术的不断发展,Ruby on Rails(简称Rails或ROR)作为一种高效、简洁且优雅的Web开发框架,受到了广大开发者的青睐。然而,在Windows...
- **书籍推荐**:《Agile Web Development with Rails》是一本经典的RoR教程,适合进一步深入了解RoR的开发实践。 - **在线社区**:参与Ruby on Rails官方论坛或Stack Overflow等社区,获取最新的技术资讯和解答开发...
### ROR 文件的上传与下载:深入解析与实践 在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails...
《机遇ROR的图书管理系统》是一份以Ruby on Rails(简称ROR)技术为核心,旨在构建高效、便捷的图书管理解决方案的学习资料。Ruby on Rails,是基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-...
FreeMIS是一个基于Ruby on Rails(RoR)框架构建的管理信息系统(MIS)。RoR是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它遵循“Don't Repeat Yourself”(DRY)原则,强调简洁和生产力。RoR使用...
破解版本的JAR包,放到本地磁盘,ECLIPUS直接用,到JVM设置直接加 -noverify -javaagent:D:\javarebel.jar
在IT行业中,Ruby on Rails(简称ROR)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发过程,提高开发效率。本文将深入探讨如何配置ROR开发环境,以及...