RoR(Ruby on Rails)是基于动态脚本语言——Ruby语言的Web开发框架,其主要应用领域是Web应用程序的开发。使用RoR开发优势在于简便,RoR提倡“化繁为简”,在实际开发过程中,开发人员只需编写少量代码即可完成强大的功能,这主要得益于RoR的约定规则。此外,由于RoR自身实现了完整的MVC模式,因此开发人员只需使用RoR即可完成整个Web应用程序的开发。
本书从设计理念、实现方式和开发实例三个角度详细地阐述了RoR Web应用程序开发框架。全书以实例开篇,力求让读者对RoR有一个直观的印象。随后,本书以结合小实例的方式详细介绍了RoR中主要功能的具体实现方式,引导读者进一步了解RoR。本书的最后是4个完整的实例,这些实例虽不复杂,但其中却折射出RoR快速开发的理念。
本书面向的读者群包括渴望了解RoR的开发人员、各类Web开发人员,以及网站建设人员。
RoR(Ruby on Rails)是基于动态脚本语言——Ruby语言的Web开发框架,其主要应用领域是Web应用程序的开发。使用RoR开发优势在于简便,RoR提倡“化繁为简”,在实际开发过程中,开发人员只需编写少量代码即可完成强大的功能,这主要得益于RoR的约定规则。此外,由于RoR自身实现了完整的MVC模式,因此开发人员只需使用RoR即可完成整个Web应用程序的开发。\r\n 本书从设计理念、实现方式和开发实例三个角度详细地阐述了RoR Web应用程序开发框架。全书以实例开篇,力求让读者对RoR有一个直观的印象。随后,本书以结合小实例的方式详细介绍了RoR中主要功能的具体实现方式,引导读者进一步了解RoR。本书的最后是4个完整的实例,这些实例虽不复杂,但其中却折射出RoR快速开发的理念。\r\n 本书面向的读者群包括渴望了解RoR的开发人员、各类Web开发人员,以及网站建设人员。
第1篇 概述篇
第1章 使用RoR快速开发的实例 2
1.1 概述 2
1.1.1 创建书目 3
1.1.2 浏览书目 3
1.1.3 修改书目 4
1.1.4 删除书目 5
1.2 数据库设计 5
1.3 系统实现 6
1.4 常见问题与解答 17
1.5 小结 18
第2章 RoR概述 19
2.1 概述 19
2.1.1 什么是Ruby 20
2.1.2 什么是Rails 21
2.2 RoR的发展现状与前景 22
2.3 搭建RoR开发环境 23
2.3.1 Windows系统下开发环境的搭建 23
2.3.2 Linux系统下开发环境的搭建 25
2.3.3 开发环境中数据库的安装与配置 26
2.4 常见问题与解答 32
2.5 小结 32
第2篇 开发篇
第3章 RoR框架分析 34
3.1 通用模块 35
3.2 RoR的核心模块 36
3.3 目录结构 39
3.4 约定优于配置 40
3.4.1 全局约定 40
3.4.2 局部约定 42
3.5 RoR与J2EE 42
3.5.1 体系架构 42
3.5.2 开发效率 43
3.5.3 社区支持 43
3.5.4 商业支持 44
3.6 RoR与PHP 44
3.6.1 体系架构 44
3.6.2 开发效率 45
3.6.3 社区支持 45
3.6.4 商业支持 45
3.7 对待RoR的态度 46
3.7.1 Web开发领域的发展趋势 46
3.7.2 动态语言与静态语言之争 46
3.7.3 一个客观事实 47
3.7.4 两点建议 48
3.8 常见问题与解答 48
3.9 小结 49
第4章 RoR模型组件:Active Record 50
4.1 必要的准备工作 50
4.1.1 MySQL数据库中数据的导出与导入 50
4.1.2 运行Ruby文件 53
4.2 model类中的约定 53
4.2.1 数据表与model类的映射关系 53
4.2.2 数据表列与对象属性间的映射关系 54
4.2.3 主键与id的关系 57
4.3 CRUD的实现 58
4.3.1 创建记录 58
4.3.2 读取数据 60
4.3.3 更新操作与删除操作 65
4.4 聚集操作与事务处理 69
4.4.1 聚集操作 69
4.4.2 事务处理 74
4.5 数据表间的关联 76
4.5.1 创建外键与指定关联关系 76
4.5.2 belongs_to声明 79
4.5.3 has_one声明 80
4.5.4 has_many声明 81
4.5.5 has_and_belongs_to_many声明 84
4.5.6 列表结构的实现 87
4.6 常见问题与解答 91
4.7 小结 92
第5章 Action Controller组件:控制行为 93
5.1 处理流程 94
5.2 URL的相关处理机制 94
5.2.1 定制URL——map.connect 95
5.2.2 还原URL——url_for() 97
5.2.3 匿名路由与有名路由 99
5.3 action方法 101
5.3.1 hide_action()方法 101
5.3.2 redirect_to()方法 102
5.3.3 render()方法 103
5.3.4 render_to_string()方法 107
5.3.5 send_data()方法 107
5.3.6 send_file()方法 108
5.3.7 flash——action方法间的通信器 109
5.4 开发环境中的预设对象 114
5.4.1 cookies对象 114
5.4.2 params对象 116
5.4.3 request对象 116
5.5 session对象 117
5.5.1 RoR中的Session处理机制 118
5.5.2 session对象存储内容的限制 118
5.5.3 session对象中的预设参数项 119
5.5.4 Session的存储 119
5.5.5 Session的到期处理 121
5.6 常见问题与解答 121
5.7 小结 122
第6章 Action View组件:显示界面 123
6.1 模板综述 123
6.2 模板的分类 126
6.2.1 rxml模板 126
6.2.2 rhtml模板 128
6.3 模板代码的分离——帮助器模块 130
6.4 局部模板 133
6.5 实战rhtml模板 136
6.5.1 表单的实现 137
6.5.2 分页的实现 143
6.6 常见问题与解答 150
6.7 小结 150
第7章 RoR下的Ajax开发 151
7.1 Ajax简介 151
7.1.1 Ajax的基本原理 152
7.1.2 Ajax效果演示 153
7.2 RoR中的实现之路 155
7.2.1 link_to_remote 156
7.2.2 form_ remote_tag 161
7.2.3 observe_field 164
7.2.4 periodically_call_remote 167
7.3 常见问题与解答 170
7.4 小结 171
第8章 RoR下的Web Service开发 173
8.1 Web Service原理 173
8.1.1 架构 174
8.1.2 相关服务标准 175
8.2 Action Web Service方法论 176
8.2.1 三种不同的调度模式 176
8.2.2 直接调度模式下的API开发 178
8.2.3 分层调度模式下的API开发 193
8.3 远程客户端实现 203
8.3.1 基于RoR的客户端实现 204
8.3.2 基于.NET的客户端实现 208
8.3.3 基于Java体系的客户端实现 214
8.4 常见问题与解答 218
8.5 小结 220
第3篇 实例篇
第9章 简单的网页计算器 222
9.1 实例描述 222
9.2 准备工作 223
9.2.1 创建RoR工程 223
9.2.2 生成controller控制器文件及模板文件 224
9.3 开发步骤详解 224
9.3.1 calculator_controller.rb 224
9.3.2 calculate.rhtml 226
9.4 实例测试 226
9.5 实例的改进 228
9.5.1 带有检错和纠错机制的controller控制器 229
9.5.2 带有检错和纠错机制的模板文件 230
9.5.3 二次测试 231
9.5.4 说明 232
9.6 常见问题与解答 232
9.7 小结 233
第10章 任务本 234
10.1 实例描述 234
10.2 准备工作 238
10.2.1 创建数据库 238
10.2.2 创建RoR工程 239
10.2.3 修改数据库配置文件 240
10.3 开发步骤详解 241
10.3.1 实现model层 241
10.3.2 实现controller层 242
10.3.3 实现view层 245
10.4 实例测试 250
10.5 常见问题与解答 254
10.6 小结 254
第11章 留言簿 255
11.1 实例描述 255
11.2 准备工作 258
11.2.1 MySQL数据库和表的创建 258
11.2.2 实现留言簿程序基本开发结构 263
11.3 开发步骤详解 268
11.3.1 work_controller.rb 268
11.3.2 work.rb 271
11.3.3 list.rhtml 271
11.4 常见问题与解答 277
11.5 小结 278
第12章 Flickr搜索引擎 279
12.1 实例描述 279
12.2 准备工作 280
12.2.1 下载并安装Flickr组件包 281
12.2.2 创建RoR工程 281
12.2.3 申请API Key 282
12.2.4 设定全局声明 282
12.3 开发步骤详解 283
12.3.1 flickr_controller.rb 283
12.1.1 application.rthml 284
12.3.3 index.rhtml 285
12.3.4 _photo.rhtml 287
12.3.5 flickr.css 287
12.4 实例测试 288
12.5 常见问题与解答 289
12.6 小结 290
附录A 如何在Eclipse中搭建RoR开发环境291
附录B 有用的网络资源 344
附录C Ruby语言简介 348
第1篇 概述篇\r\n 第1章 使用RoR快速开发的实例\r\n 1.1 概述 \r\n 1.2 数据库设计\r\n 1.3 系统实现 \r\n 1.4 常见问题与解答 \r\n 1.5 小结 \r\n 第2章 RoR概述 \r\n 2.1 概述 \r\n 2.2 RoR的发展现状与前景 \r\n 2.3 搭建RoR开发环境 \r\n 2.4 常见问题与解答 \r\n 2.5 小结\r\n第2篇 开发篇\r\n 第3章 RoR框架分析 \r\n 3.1 通用模块\r\n 3.2 RoR的核心模块 \r\n 3.3 目录结构 \r\n 3.4 约定优于配置 \r\n 3.5 RoR与J2EE \r\n 3.6 RoR与PHP \r\n 3.7 对待RoR的态度 \r\n 3.8 常见问题与解答 \r\n 3.9 小结 \r\n 第4章 RoR模型组件:Active Record \r\n 4.1 必要的准备工作 \r\n 4.2 model类中的约定 \r\n 4.3 CRUD的实现\r\n 4.4 聚集操作与事务处理 \r\n 4.5 数据表间的关联 \r\n 4.6 常见问题与解答\r\n 4.7 小结 \r\n 第5章 Action Controller组件:控制行为\r\n 5.1 处理流程\r\n 5.2 URL的相关处理机制\r\n 5.3 action方法\r\n 5.4 开发环境中的预设对象 \r\n 5.5 session对象 \r\n 5.6 常见问题与解答 \r\n 5.7 小结 \r\n 第6章 Action View组件:显示界面 \r\n 6.1 模板综述 \r\n 6.2 模板的分类\r\n 6.3 模板代码的分离——帮助器模块 \r\n 6.4 局部模板 \r\n 6.5 实战rhtml模板 \r\n 6.6 常见问题与解答 \r\n 6.7 小结\r\n 第7章 RoR下的Ajax开发\r\n 7.1 Ajax简介 \r\n 7.2 RoR中的实现之路 \r\n 7.3 常见问题与解答 \r\n 7.4 小结 \r\n 第8章 RoR下的Web Service开发 \r\n 8.1 Web Service原理 \r\n 8.2 Action Web Service方法论 \r\n 8.3 远程客户端实现 \r\n 8.4 常见问题与解答 \r\n 8.5 小结 \r\n第3篇 实例篇\r\n 第9章 简单的网页计算器\r\n 9.1 实例描述 \r\n 9.2 准备工作 \r\n 9.3 开发步骤详解 \r\n 9.4 实例测试\r\n 9.5 实例的改进 \r\n 9.6 常见问题与解答\r\n 9.7 小结 \r\n 第10章 任务本\r\n 10.1 实例描述 \r\n 10.2 准备工作\r\n 10.3 开发步骤详解 \r\n 10.4 实例测试 \r\n 10.5 常见问题与解答\r\n 10.6 小结 \r\n 第11章 留言簿\r\n 11.1 实例描述 \r\n 11.2 准备工作\r\n 11.3 开发步骤详解 \r\n 11.4 常见问题与解答 \r\n 11.5 小结\r\n 第12章 Flickr搜索引擎 \r\n 12.1 实例描述\r\n 12.2 准备工作\r\n 12.3 开发步骤详解\r\n 12.4 实例测试\r\n 12.5 常见问题与解答\r\n 12.6 小结 \r\n附录A 如何在Eclipse中搭建RoR开发环境\r\n附录B 有用的网络资源 \r\n附录C Ruby语言简介
RoR(Ruby on Rails)正式发布至今不足2年,虽然出现的时间不长,但其在Web开发领域却受到了广泛的关注。
在RoR出现以前,Web开发是十分繁杂的事情。过分追求灵活性导致了大量配置文件的出现,而过分追求开发功能的完善导致了开发平台臃肿不堪。与传统Web开发平台不同,RoR走出了一条完全不同的道路。
在RoR中,一切都显得那么自然和简单。RoR最主要的开发理念是“化繁为简”。首先,RoR放弃了大量烦琐的配置文件,取而代之的是名称约定,即著名的“约定优于配置”;其次,RoR基于Ruby动态语言,动态语言的特点是少量的代码即可实现强大的功能;最后,RoR框架实际上是Ruby语言与Rails框架的无缝整合,Rails很好地扩展了Ruby语言的功能(有一句话可以很好地描述这点:“Ruby在哪里结束,Rails在哪里开始”),这种天然特性为Web开发提供了极大的便利。
本书读者对象
本书详细地介绍了RoR的开发理念和主要功能的实现方式,适合的读者对象有:
基于RoR快速开发Web应用程序的开发人员。
准备使用RoR开发Web应用程序的开发人员。
渴望了解RoR框架的开发人员。
渴望了解新技术的技术人员。
本书特色
目前市面上的RoR图书还相对较少,而本书的主要特色在于注重理论与实践的结合。本书在描述RoR的各种方法和特点时都有实例相配合,从而让读者对RoR快速开发始终能够有一个直观的印象。
本书的写作基于Ruby-1.8.4和Rails-1.0.0。
本书内容
本书分为概述篇(第1~2章)、开发篇(第3~8章)、实例篇(第9~12章)和附录4个部分。各部分的具体内容如下:
第1章 使用RoR快速开发的实例
本章通过一个简单的实例展现了RoR快速开发的魅力所在,帮助读者形成对RoR快速开发的直观印象。
第2章 RoR概述
本章系统地阐述了RoR框架的物理特性,主要包括的内容有RoR的发展历程和RoR开发环境的搭建。
第3章 RoR框架分析
本章重点说明了RoR的开发理念和RoR中一些重要的规则,本章的最后将RoR与J2EE和PHP进行了对比,说明了RoR的优势和不足。
第4章 RoR模型组件:Active Record
本章结合实例说明了如何利用Active Record组件实现对数据库的控制。
第5章 Action Controller组件:控制行为
本章结合实例说明了如何使用Action Controller组件实现对Web应用程序的控制,具体包括请求的处理、响应的发出,以及相关处理行为的具体实现。
第6章 Action View组件:显示界面
本章结合实例说明了如何基于Action View组件实现RoR的模板。
第7章 RoR下的Ajax开发
Ajax是与RoR几乎同期出现的新技术,二者结合可以创造出更多神奇的效果,本章介绍了如何在RoR下进行Ajax开发。
第8章 RoR下的Web Service开发
本章结合实例(RoR-RoR、RoR-.NET和RoR-J2EE)说明了如何在RoR下进行Web Service开发。
第9章 简单的网页计算器
本章详细地讲解了网页计算器的实现,并说明了RoR下的纠错机制的简单实现。
第10章 任务本
本章通过任务本程序的实现说明了RoR开发具体应用时应注意的问题。
第11章 留言簿
留言簿程序是常见的Web应用程序,本章详细地介绍了如何在RoR中实现留言簿程序。
第12章 Flickr搜索引擎
本章介绍了如何通过RoR调用远程的Flickr搜索引擎服务端,进而实现本地的Flickr搜索引擎。
附录
本部分内容包括在Eclipse中搭建RoR开发环境、有用的网络资源和Ruby语言语法规则简介。
本书编写情况
本书的第1~6章由柳靖编写;第7章由柳靖和刘淼共同编写;第8章由柳靖和周国能共同编写;第9、12章由曹璐编写;第10章由曹璐和吴琼共同编写;第11章由赵丹编写;附录部分由柳靖和吴蓓共同编写。全书最后由柳靖修改、统稿。
致谢
在本书完成之际,我首先要感谢我的父母和亲人,没有他们的支持与帮助,我想我很难完成此书的编写工作。感谢本书的策划编辑张毅和编辑葛娜,他们为本书的完成提供了大量宝贵的意见。感谢所有关心支持本书编写的朋友,他们的支持是我前进的动力。
附注
本书相关的源代码可从博文视点网站http://www.broadview.com.cn/下载。
限于水平,加之时间仓促,书中错漏之处难免,敬请读者批评指正。
柳靖
无封面