第1篇 语言篇 2
第1章 Ruby on Rails简介 2
1.1 Ruby on Rails概述 2
1.1.1 Ruby简介 2
1.1.2 什么是Rails 3
1.2 搭建Ruby on Rails开发和运行环境 4
1.2.1 安装Ruby解释器 4
1.2.2 安装Rails框架 6
1.2.3 安装MySQL数据库 7
1.3 Ruby on Rails开发工具 13
1.3.1 SciTE开发工具 13
1.3.2 RadRails开发工具 14
1.3.3 使用RadRails开发工具创建Ruby项目 18
1.4 Ruby程序设计入门 21
1.4.1 Ruby语言简单应用 22
1.4.2 获取用户输入数据 23
1.4.3 管理Ruby解释器 24
第2章 Ruby基本语法 26
2.1 常量和变量 26
2.1.1 常量 26
2.1.2 局部变量 29
2.1.3 全局变量 30
2.2 运算符 31
2.2.1 算术运算符 32
2.2.2 赋值运算符 32
2.2.3 位运算符 32
2.2.4 比较运算符 33
2.2.5 逻辑运算符 34
2.2.6 三目运算符 34
2.2.7 运算符的优先级别 35
2.3 表达式 35
2.3.1 带返回值的表达式 36
2.3.2 无返回值的表达式 36
2.3.3 并行赋值 37
2.3.4 嵌套赋值 38
2.4 基本类型 38
2.4.1 数值型 38
2.4.2 范围 40
2.4.3 哈希表 42
2.4.4 符号 44
2.5 流程控制语句 46
2.5.1 if语句 46
2.5.2 unless语句 48
2.5.3 case语句 49
2.5.4 while语句 51
2.5.5 until语句 53
2.5.6 for…in语句 53
2.5.7 loop语句 54
2.5.8 迭代器 55
2.5.9 break语句 56
2.5.10 next语句 57
2.5.11 redo语句 58
2.5.12 retry语句 59
2.5.13 return语句 60
2.6 字符串 60
2.6.1 创建字符串 61
2.6.2 字符串的%表示法 62
2.6.3 多行字符串表示方式 63
2.7 数组 65
2.7.1 定义数组 65
2.7.2 数组的%表示方法 66
2.7.3 添加和删除数组元素 67
2.7.4 截取和合并数组 68
第3章 面向对象 70
3.1 面向对象 70
3.1.1 面向对象概念 70
3.1.2 定义类 71
3.1.3 实例化类 73
3.1.4 嵌套类 74
3.1.5 特殊类 75
3.2 方法 76
3.2.1 声明方法 76
3.2.2 设定方法参数默认值 77
3.2.3 方法返回值 78
3.2.4 定义特殊方法 79
3.2.5 定义类方法 79
3.3 变量 80
3.3.1 实例变量 80
3.3.2 类变量 81
3.4 构造函数 82
3.5 属性 83
3.6 访问作用域 86
3.7 迭代器和块 88
3.7.1 在方法中使用块 88
3.7.2 实现迭代器 90
3.8 类的继承 92
3.8.1 继承的特点和语法 92
3.8.2 覆盖基类的方法 94
3.8.3 访问基类构造函数 96
第4章 高级特性 98
4.1 模块 98
4.1.1 定义模块 98
4.1.2 命名空间 100
4.1.3 加载其他文件 102
4.2 别名和定义 103
4.2.1 定义别名 103
4.2.2 释放定义 103
4.2.3 判断是否完成定义 104
4.3 BEGIN块和END块 106
4.3.1 BEGIN块和END块 106
4.3.2 at_exit块 107
4.4 动态语言特性 108
4.4.1 method_missing方法 108
4.4.2 duck typing特性 109
4.4.3 Proc对象 109
4.4.4 用eval方法动态执行代码 111
4.5 垃圾收集器 113
4.6 异常 113
4.6.1 常见异常 113
4.6.2 捕获异常 114
4.6.3 显示抛出异常 117
4.6.4 创建异常类 118
第5章 常用模块 120
5.1 使用字符串 120
5.1.1 合并字符串 120
5.1.2 替换字符串内容 122
5.1.3 改变字符串 123
5.1.4 获取或替换字符和子字符串 124
5.1.5 比较两个字符串是否相等 125
5.1.6 比较两个字符串大小 126
5.2 类型转换 127
5.2.1 内置类型转换方法 127
5.2.2 自定义类型转换方法 128
5.3 正则表达式 129
5.3.1 介绍正则表达式 129
5.3.2 正则表达式操作 130
5.4 时间和日期 131
5.4.1 生成当前时间对象 131
5.4.2 mktime方法和local方法 132
5.4.3 to_a方法 133
5.4.4 返回第几天的方法 134
5.4.5 时间相加减 134
5.4.6 日期的格式化 135
5.5 线程 136
5.5.1 创建线程 136
5.5.2 返回当前线程 139
5.5.3 挂起当前线程 139
5.5.4 显示控制线程 140
5.5.5 停止线程 141
5.5.6 sleep线程 142
5.6 线程状态 143
5.7 线程的同步 145
5.7.1 同步对资源的访问 145
5.7.2 同步队列类 148
5.7.3 使用ConditionVariable类实现同步 148
第6章 操作文件与目录 152
6.1 获取文件所有者及其权限 152
6.1.1 获取文件所有者和所属组 153
6.1.2 操作文件权限 153
6.1.3 判断用户读写文件权限和执行文件权限 153
6.2 获取与设置文件时间戳 154
6.3 判断文件是否存在及其大小 155
6.3.1 判断文件是否存在 156
6.3.2 获取文件大小 156
6.4 打开与关闭文件 157
6.4.1 打开文件 157
6.4.2 关闭文件 158
6.5 读取文件 159
6.5.1 read方法 159
6.5.2 移动文件指针 160
6.5.3 readchar方法 161
6.5.4 readline方法和readlines方法 161
6.5.5 gets方法 162
6.6 使用迭代读取文件 162
6.6.1 以迭代文件内容行的方式读取文件 163
6.6.2 以迭代文件内容字节的方式读取文件 163
6.6.3 使用foreach迭代器迭代文件内容 164
6.7 写入文件 164
6.7.1 w或者w+模式写入文件 165
6.7.2 a或者a+模式写入文件 165
6.8 操作文件 166
6.8.1 删除文件 166
6.8.2 重命名文件 167
6.9 操作路径 168
6.9.1 操作路径名 168
6.9.2 获取绝对路径和设置新路径 169
6.10 操作目录 170
6.10.1 获取和改变当前目录 170
6.10.2 获取目录列表 171
6.10.3 删除目录 172
第7章 操作数据库 174
7.1 DBI操作数据库 174
7.1.1 DBI概述 175
7.1.2 连接MySQL数据库 176
7.1.3 执行SQL语句 177
7.1.4 获取查询结果集 178
7.1.5 占位符 179
7.1.6 查询元数据 180
7.1.7 DBI事务处理 181
7.2 使用Mysql模块处理数据库 183
7.2.1 Ruby Mysql模块概述 183
7.2.2 执行SQL语句 184
7.2.3 使用fetch_row方法获取查询结果集 185
7.2.4 迭代器 186
7.2.5 使用fetch_hash方法获取查询结果集 187
7.2.6 显示NULL值结果集 187
7.2.7 特殊字符处理 188
7.2.8 使用Mysql模块查询元数据 189
第2篇 框架篇 192
第8章 创建第一个Ruby On Rails程序 192
8.1 配置运行环境 192
8.1.1 Rails概述 192
8.1.2 配置Rails环境 194
8.2 生成基本框架 195
8.2.1 创建Web应用 195
8.2.2 查看目录结构 197
8.2.3 配置数据库 198
8.3 生成页面支架 202
8.3.1 生成页面支架 202
8.3.2 测试Web应用 203
8.3.3 RoR与MVC的关联性 209
8.4 完善第一个Web应用 211
8.4.1 处理中文乱码 211
8.4.2 美化商品列表页面 214
8.4.3 美化Rails应用程序模板和其他功能页面 217
第9章 数据持久层技术ActiveRecord 224
9.1 对象关系模型 224
9.2 ActiveRecord入门 225
9.2.1 ActiveRecord概述 225
9.2.2 表对应类 226
9.2.3 列对应属性 230
9.2.4 访问属性 233
9.2.5 数据序列化 235
9.2.6 映射主键 237
9.3 连接数据库 240
9.4 新增数据 241
9.4.1 无参数调用new方法新增数据 241
9.4.2 有参数调用new方法 243
9.4.3 使用块参数调用new方法 244
9.4.4 使用Hash对象作为参数实例化持久类 245
9.5 使用create方法新增数据 246
9.5.1 新增一条记录 246
9.5.2 增加多行记录 248
9.6 读取数据 250
9.6.1 find方法 250
9.6.2 根据主键查询 251
9.6.3 获取记录的第一行 253
9.6.4 获取记录的最后一行 254
9.6.5 获取所有记录 256
9.7 动态查询 258
9.7.1 使用find_by_*方法查询数据 258
9.7.2 使用find_all_by*方法查询数据 259
9.7.3 使用find_by_*_and_*方法查询数据 260
9.7.4 使用find_all_by_*_and_*方法查询数据 261
9.8 使用SQL语句查询 261
9.9 读取记录行数 262
9.9.1 使用count方法获取查询记录行数 263
9.9.2 使用count_by_sql方法获取查询记录行数 263
9.10 更新数据 264
9.10.1 使用save方法直接更新特定记录 264
9.10.2 使用update_attribute方法更新记录 265
9.10.3 使用update_attributes方法更新记录 265
9.10.4 使用update方法更新一行或多行记录 266
9.10.5 使用update_all方法更新记录 267
9.11 删除数据 268
9.11.1 使用delete方法删除记录 269
9.11.2 使用delete_all方法根据条件子句删除记录 269
9.11.3 使用destroy方法删除记录 270
9.11.4 使用destroy_all方法删除记录 271
第10章 ActiveRecord高级操作 272
10.1 设计关联 272
10.1.1 表关联 272
10.1.2 指定关联 274
10.1.3 一对一关联 275
10.1.4 一对多关联 278
10.1.5 多对多关联 283
10.1.6 自关联 287
10.2 处理事务 289
10.3 创建自定义校验数据方法 292
10.4 常用模型校验器 294
10.4.1 非空校验 294
10.4.2 唯一校验 295
10.4.3 校验长度和大小 296
10.4.4 校验正整数 297
10.4.5 校验格式 298
10.4.6 校验确认 299
10.4.7 其他校验 301
10.5 回调处理 301
10.6 控制显示错误信息的CSS样式 302
第11章 ActionController控制器解决方案 304
11.1 ApplicationController介绍 304
11.2 路由概述 306
11.2.1 路由配置文件 306
11.2.2 资源路由 309
11.2.3 命名路由 313
11.2.4 正则路由 314
11.2.5 指定URL规则 315
11.3 使用render方法重定向 316
11.3.1 提交到默认模板 316
11.3.2 提交到自定义模板 318
11.3.3 使用自定义模板 319
11.3.4 提交到局部模板 321
11.3.5 提交到文件 322
11.3.6 提交文本 323
11.3.7 提交到内嵌模板 323
11.4 使用redirect_to方法重定向 324
11.4.1 重定向到指定的Action 324
11.4.2 通过URL重定向 325
11.5 render和redirect_to方法页面跳转不同点 326
11.6 Session和Cookie 326
11.6.1 Session概述 326
11.6.2 操作Session 326
11.6.3 Cookie概述 331
11.6.4 操作Cookie 332
第12章 ActionView视图层解决方案 335
12.1 模板 335
12.1.1 .erb模板 336
12.1.2 .builder模板 338
12.1.3 .rjs模板 340
12.1.4 局部模板 342
12.1.5 Layout模板 348
12.2 基本工具 350
12.2.1 显示图片 350
12.2.2 获取图片路径 351
12.2.3 加载Javascript函数库 352
12.2.4 获取.js文件路径 353
12.2.5 加载CSS样式文件 353
12.3 格式化输出 354
12.3.1 数字格式化 354
12.3.2 日期格式化 358
12.3.3 字符串格式化 359
12.4 链接工具 360
12.4.1 创建超链接的方法 360
12.4.2 创建E-mail链接的方法 362
12.4.3 url_for方法 363
12.5 基本表单工具 364
12.5.1 Form表单 364
12.5.2 复选框 365
12.5.3 fieldset标签 366
12.5.4 隐藏标签 366
12.5.5 提交按钮 367
12.5.6 显示文本 367
12.5.7 密码文本框 367
12.5.8 单选按钮 368
12.5.9 下拉选项菜单 368
12.5.10 创建文本框方法 369
12.6 高级表单工具 370
12.6.1 绑定表单与实体类 370
12.6.2 创建下拉选项菜单 373
12.7 日期/时间下拉选项菜单 375
12.7.1 date_select方法 375
12.7.2 datetime_select方法 377
12.7.3 distance_of_time_in_words方法 378
12.7.4 与当前时间比较 379
12.7.5 select_*系列方法 379
12.8 使用Helper 381
12.9 使用缓存 383
12.9.1 页面缓存 383
12.9.2 局部缓存 386
12.9.3 Action缓存 387
第3篇 客户端和服务器端开发篇 392
第13章 Ruby on Rails下的Ajax开发 392
13.1 Ajax简介 392
13.1.1 什么是Ajax 392
13.1.2 Ajax基本原理 393
13.1.3 Ajax优势 394
13.1.4 Ajax组成部分 395
13.1.5 第一个Ajax实例 397
13.2 Rails Ajax概述 400
13.2.1 Prototype简介 401
13.2.2 Scriptaculous简介 401
13.2.3 内置模块 401
13.3 使用Ajax 403
13.3.1 发送异步请求 403
13.3.2 异步提交表单 406
13.3.3 执行远程JavaScript 408
13.3.4 发送自定义请求 410
13.4 Ajax视觉特效 411
13.4.1 视觉效果 411
13.4.2 拖动效果 413
13.4.3 顺序重排列表 418
第14章 Ruby on Rails高级开发技术 421
14.1 发送邮件 421
14.1.1 SMTP简介 422
14.1.2 基本步骤 422
14.1.3 创建邮件项目 423
14.1.4 创建功能支架 424
14.1.5 会员注册 426
14.1.6 发送激活邮件 428
14.1.7 激活处理 430
14.1.8 会员登录 432
14.2 开发基于REST的应用程序 434
14.2.1 REST简介 434
14.2.2 Rails与REST 435
14.2.3 使用REST 435
14.3 文件上传和下载 443
14.3.1 文件上传 443
14.3.2 文件下载 446
14.4 FCKeditor文本编辑器 448
14.4.1 安装FCKeditor 448
14.4.2 使用FCKeditor 449
14.4.3 使用技巧 450
第四篇 实例篇 256
第15章 留言本 256
15.1 系统分析 256
15.1.1 功能分析 256
15.1.2 设计数据库 257
15.2 准备工作 258
15.2.1 创建项目 258
15.2.2 安装分页插件 259
15.2.3 制作布局 261
15.3 功能实现 264
15.3.1 浏览留言 264
15.3.2 发表留言 266
15.3.3 查看留言 269
15.4 管理留言 272
15.4.1 修改留言 272
15.4.2 回复留言 274
15.4.3 删除留言 276
15.4.4 管理员操作 277
第16章 电子拍卖系统 482
16.1 系统分析 482
16.1.1 需求分析 482
16.1.2 系统用例图 484
16.1.3 设计数据库 486
16.2 设计系统公共模块 487
16.2.1 创建项目以及配置系统 488
16.2.2 设计Layout模板 488
16.3 用户模块 492
16.3.1 用户注册 492
16.3.2 登录/退出 496
16.4 商品分类模块 498
16.4.1 添加商品分类 499
16.4.2 管理商品分类 502
16.5 拍卖商品模块 506
16.5.1 浏览个人拍卖商品 506
16.5.2 添加拍卖商品 508
16.5.3 管理拍卖商品 511
16.6 竞拍模块 512
16.6.1 浏览所有拍卖商品 513
16.6.2 竞拍商品与查看竞拍记录 515
16.6.3 查看个人竞拍商品 519
16.6.4 查看赢取商品 522