《深入浅出Rails 中文版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)格里菲思著
  • 出 版 社:南京:东南大学出版社
  • 出版年份:2011
  • ISBN:9787564130749
  • 页数:417 页
图书介绍:本书延续传统的“深入浅出”系列书籍,提供有用的、现实世界的信息让你快速学习。本书将使你的编程和生产力达到最大值。你将学习一切Rails scaffolding的基本原理,以创建自定义的交互式网络应用程序,全部使用Rails的一套丰富的工具和MVC框架。本书对Rails学习者来说是一本绝妙的书,同样绝妙的还有那些最新功能的重温。

1 飞驰的Rails 开始了 3

这个应用需要做很多事情 3

那么关于这个应用我们需要些什么呢? 4

Rails适用于那些以数据库为中心的应用,就像这个售票系统 6

你可以用rails命令来创建一个新的Web应用 7

现在需要在默认应用中加入你自己的代码 9

支架就是生成的代码 10

数据库中还没有数据表! 14

通过运行迁移来创建这个数据表 15

好棒!你挽救了好朋友的工作! 19

为了更改应用,你需要深入了解应用的架构 20

你的应用包含三个部分:模型(model)、视图(view)、控制器(controller) 21

Rails真情指数 22

这三种不同类型的代码存放在独立的文件夹中 25

视图中的文件需要被编辑 26

编辑视图中的HTML 27

现在这个应用需要存储更多的信息 31

迁移就是Ruby脚本 32

Rails可以生成迁移 33

给你的迁移一个“聪明”的名字,然后Rails就会为你编写代码 34

你需要用rake运行你的迁移 35

但是改动数据库还不够 36

2 Rails应用,生来有序 超越支架 49

支架做的事太多了 49

让我们从生成Mebay模型开始…… 50

然后我们就用rake真正地创建数据表 51

但是控制器是怎样的呢? 52

视图是通过页面模板创建出来的 54

页面模板包含了HTML 55

路由会告诉Rails你的网页在哪儿 57

视图没有要显示的数据 64

那么页面应该显示哪些内容? 65

控制器把广告发送给视图 66

Rails把记录转化成对象 68

数据在内存中,而网页可以看见它们 69

有个问题——用户找不到他们想要的网页 73

路由按照优先级顺序运行 76

为了把数据放入视图,你还需要控制器中的代码 78

索引页面需要来自所有记录的数据 79

Ad.find(:all)一次读取整个数据表 80

数据作为一个称为数组的对象返回 81

数组就是一些编号后的对象序列 82

用for循环读取所有的广告 86

数组中的每个元素都需要HTML 87

Rails把页面模板转换成Ruby代码 88

可以用脚本段把循环加入到页面模板中 89

在循环的每次执行中,页面都会生成一个链接 90

生成的HTML是什么样的呢? 91

但是有两个页面模板……我们要修改每个模板的代码吗? 94

但是MeBay发送过来的新的静态内容怎么办? 97

3 一切都在变化中 插入、更新和删除 104

人们希望在线张贴新广告 104

你已经知道如何搭建一个发布数据库中数据的应用 105

保存数据就像读取数据的反向那样工作 106

你需要一个用来提交数据的表单和一个保存此数据的动作方法 107

表单与对象相关吗? 109

Rails能够创建与模型对象相关联的表单 110

@ ad表单对象还没有被创建 114

表单对象需要在表单被显示之前创建好 115

表单广告对象将在控制器的new动作中被创建 116

现在每个页面模板都有一个匹配的控制器方法 117

表单不会发送回对象,它发送回数据 119

Rails需要在数据被保存之前把数据转化成对象 120

手把手教你控制器的create方法 121

控制器需要保存记录 122

不要创建新页面,使用现有页面 128

但是控制器动作如何才能显示另一个动作的页面呢? 129

重定向使控制器能够指定显示哪个视图 130

但是如果广告在张贴后需要修改该怎么办? 133

更新广告就像创建广告一样……只有一点小区别 134

你需要找到一个广告而不是创建它, 135

你需要更新这个广告而不是保存它 135

限制对某个功能的访问 142

但是现在旧广告需要被删掉 145

自己编写代码可以让你实现比支架更多的功能 151

4 事实还是推论? 数据库查询器 154

Rubyville健身俱乐部让你保持体形 154

这个应用其实看起来很接近教练们的需求…… 157

我们选择修改支架 158

设计搜索功能 159

让我们从建立表单开始 160

为界面添加搜索功能 163

我们如何查找客户记录呢? 171

我们只需要那些client-name=搜索字符串的记录 172

每个属性都有一个查询器 173

我们需要匹配客户名字或者教练名字 178

查询器生成数据库查询 179

我们需要修改SQL查询中的条件 180

使用:conditions来提供SQL 181

5 防止错误 验证你的数据 188

注意——应用里有错误数据 188

验证代码放在模型中 190

Rails使用验证器来实现简单验证 191

验证器是如何工作的? 192

让我们检查某些东西是否是数字 194

用户在他们的健身表单中漏填了一些数据 196

我们该如何检查必须填写的域? 197

验证器很简单而且工作得很好 200

MeBay发生了很奇怪的事情 203

验证器有效,但是它们没有显示错误 204

如果你搭建自己的页面,你需要编写自己的错误消息代码 207

控制器需要知道是否存在错误 208

我们还要显示错误消息! 212

MeBay系统现在看起来挺滋润 214

6 把它们集合起来 建立连接 220

椰子航空需要一个订票系统 220

我们需要在一个页面上同时看到航班和座位预订信息 222

让我们看看座位支架代码给了我们什么 223

我们需要让预订表单和座位列表出现在航班页面上 224

我们怎样才能把个页面的内容分解到几个文件里呢? 225

ERb将组织我们的页面 229

我们如何创建预订表单局部模板? 230

现在我们需要在模板中包含局部模板 231

我们需要给局部模板一个seat变量! 234

你可以把局部变量传递给局部模板 235

我们还需要为座位列表做一个局部模板 242

人们最终登上了错误的航班 244

关系把不同模型连接起来 245

但我们如何定义关系呢? 247

但有些人有太多的行李 249

我们需要编写自己的验证器 250

我们需要反转关系 253

这个系统在椰子航空投入运行 260

7 减少流量 ajax 264

椰子航空有个新的促销计划 264

页面的哪一部分变化最快? 265

浏览器不总是更新整个页面吗? 270

还有什么方法可以发送请求? 271

首先我们需要包含Ajax库…… 272

接下来我们需要添加一个Ajax “Refresh”链接 273

浏览器需要主动询问更新 278

我们一定要让浏览器反复询问吗? 279

你可以像监听按钮事件一样监听定时器事件 280

Ajax真情指数 284

有些人的单身派对有问题了 285

表单需要生成一个Ajax请求 286

表单需要由JavaScript来控制 287

我们需要替换create方法 289

这段代码会有怎样的效果呢? 290

航班预订有个问题 295

我们只知道如何一次更新页面的一部分内容 296

控制器需要返回JavaScript而不是HTML 297

那么Rails生成了些什么? 301

如果你没有表明在哪儿放置响应,那么它就会被执行 302

8 现在看起来都不一样了……XML和多种表现形式 308

在世界各地登山 308

用户讨厌这个界面! 309

数据需要在地图上 310

我们需要创建一个新的动作 311

新动作看起来可以工作…… 312

新页面需要一幅地图……这才是关键! 313

我们需要什么样的代码呢? 314

这段代码仅能工作在本地主机上 315

现在我们需要地图数据 316

我们需要生成什么样的数据呢? 318

我们从模型中生成XML 319

模型对象能够生成XML 320

控制器代码看起来是什么样呢? 321

此时,在20 000英尺的高度…… 326

我们需要生成XML和HTML 327

XML和HTML仅仅只是表现形式而已 329

我们应该如何确定使用哪一种格式? 330

地图页面是如何工作的呢? 334

代码可以正式运行了 336

RSS源就是XML 344

我们将创建一个名叫news的动作 345

我们必须更改XML的结构 348

所以我们将使用一种新模板:XML Builder 349

现在让我们把源加入到页面中 353

在世界最高点! 355

9 更上一层楼 REST与Ajax 358

事件太多了! 358

地图可以显示更多的详细信息 359

我们能够扩展基于Ajax的地图 360

但我们怎样才能改变索引页面呢? 361

“show”动作需要生成怎样的内容? 362

新的地图功能成功了! 367

我们也需要使用Ajax来创建请求 368

地图局部模板可以让我们指定一个“new”动作 370

我们如何证明一个事件已经被保存? 375

表单需要更新弹出窗口的〈div〉的内容 376

雪崩! 381

现在编辑是如何实现的…… 382

我们可以在弹出窗口中加入一个“Edit”链接 383

我们从修改“edit”动作开始 384

我们还需要在show页面上增加一个新链接 386

那么我们该如何使用link_to辅助函数? 387

让Ajax链接来拯救我们 391

我们用错了路由! 393

HTTP方法是选择路由的一个因素 394

什么是HTTP方法? 395

Head First Climbers需要你! 398

10 真实世界里的Rails 真实世界里的应用 405

看!这儿有满满一页的Ruby “试试看” 405

Web应用也需要测试 406

有哪些类型的测试可用呢? 407

上线运行 408

那么你该如何更改数据库配置呢? 409

什么是REST? 410

迷失方向的Web应用 411

生活在Edge上 412

获取更多的信息 413

消遣性读物…… 414

相关话题的“深入浅出”系列书籍 415

离开Rails村…… 417