2.1.3 使用代码生成器生成支架
scaffold是Rails提供的一个功能十分强大的代码生成器,它可以生成一个简单应用雏形,这个应用雏形为某个实体生成基本的C(Create)R(Read)U(Update)D(Delete)操作,这个雏形应用就被称为支架。
使用scaffold代码生成器非常简单,即在DOS窗口进入Rails应用所在的路径下,然后执行如下格式的命令:
ruby script/generate scaffold 模型名 (控制器名) |
上面格式的命令中,模型名为必选项,控制器名是可选项。
如果省略控制器名,则表示生成指定模型(Model)的基本的CRUD操作。所谓模型(Model),就是对应一个持久化实体的名称。Rail约定:数据库中的表对应模型中的一个类。例如数据库里有一个users数据表,而系统就可以对应一个User Model。这里,我们又看到了约定优于配置的好处,这些约定使得我们不必关心Rails的底层实现,只要按照Rails的约定,就能很容易地将数据层和持久层映射起来。必须指出的是,使用scaffold代码生成器时,Rails会检测系统所配置的数据库里是否包含Model所需的数据表。
如果指定控制器名,则可以为指定的控制器生成关于指定Model的基本的CRUD操作。
提示 正如前面介绍的,当我们使用rails命令来创建一个Rails应用时,rails命令为script路径下生成了很多脚本,其中generate就是一个代码生成器脚本,用它可以自动生成很多应用的框架代码。
现在,使用支架来为我们的firstApp应用生成支架。因为我们刚才为应用创建了一个users数据表,根据Rails的约定,它将会对应一个User Model。因此,我们可以为User Model使用scaffold代码生成器,即在DOS窗口进入Rails应用所在的路径下,执行如下命令。
ruby script\generate scaffold User User |
在DOS窗口中看到的执行结果如图2.4所示。
![]() |
| 图2.4 使用scaffold代码生成器 |
由图2.4可看到,使用scaffold代码生成器,生成了一系列的相关文件或文件夹。其中,自动在app/models路径下为我们生成了user.rb这个Model文件;在app/controllers路径下生成了Model对应的user_controller.rb控制器文件;在app/views路径下创建了一个user文件夹,该文件夹用于存放User控制器调用的所有视图文件。
在firstApp应用的根路径下双击start.cmd批处理文件,启动WEBrick服务器,然后在浏览器的地址栏输入http://localhost:3000/user或http://127.0.0.1:3000/user(假定读者在本机启动Rails应用),将会在浏览器中看到list页面。该页面用于列出所有用户对象,因为我们的数据库中目前没有任何的用户,所有页面中没有列出任何用户。单击“New user”链接,即可进入添加用户的页面,如图2.5所示。
由图2.5可知,由scaffold生成的添加页面是十分简单和不美观的。毕竟,这只是Rails为我们生成的最基本的视图模板。不过没关系,本章的后面会向读者介绍如何定制个性化视图。
在图2.5所示的页面中输入数据后提交,将会重定向到list页面,并在该页面上显示成功信息。浏览器中将会看到如图2.6所示的效果。
![]() |
| 图2.5 使用scaffold生成的添加用户页面 |
![]() |
| 图2.6 使用scaffold生成的用户清单页面 |
从图2.6可看出,该页面中除“New user”链接之外,还包含了“Show”、“Edit”和“Destroy”链接,这正是对应scaffold代码生成器的基本功能:生成对特定Model的CRUD操作。这对于快速迭代开发是非常有帮助的,还可以让客户在非常短的时间内看到系统的雏形。
| 回书目 上一节 下一节 |