制. R
HTML 是真正的模板格式 —— 不仅是在 HTML 中嵌入代码的方式 —— 这是一种更为有效的方法. 如果您熟悉 PHP,那么可以考虑
PHP 本身与 Smarty 模板之间的对照.也就是说,嵌入的脚本只是 将代码与未被解释的 HTML 混合在一起;当需要向客户机输出某些内容时,代码部分 仍要负责执行 print 语句. 与之不同的是,模板引擎向 HTML 添加了一组定制的标签,让您能够将条件,循环以及其他逻辑作为 增强的 HTML 标记的一部分来表示.
生成代码
Rails 所提供的工具主要是一组代码生成器.相对于那些强迫我使用严格的
工作空间和 IDE 的开发环 境,我更喜欢这种方法. Rails 不会妨碍您,但是却会为您省去大部分手工编程的工作 —— 或者,通 过提供"可自由获得的"初步(first-pass)支架(scaffolding), 至少帮助您轻松将需要手工编码的工 作分为多个部分.
支架 概念是 Rails 中的核心概念.非常简单的应用程序可能完全不用编码,让 Rails 在运行时动态地 生成客户机 HTML 页面. 第一遍生成代码时创建的只是粗略的支架;接下来您可以生成更详细的能 够定制的控制器,视图和模型.不过在开始时不需要生成太多.
Rails 对其文件的组织是固定的而且非常普通的,不过这种组织相对严格.如果您试图强行使用其他文 件和代码组织方式,那么您可能得 付出努力去修改 Rails 环境.再者说,我找不到不使用 Rails 所提 供的组织方式的理由;在大部
分情况下,它"fits your brain"(Ruby 的 支持者喜欢这样讲).例如, 如果您从头开始
设计一个框架(至少如果您以"Ruby 方式"思考),那么这些目录名称及其组织可能与 您的选择非常接近.
构建一个简单的应用程序
在 Ruby on Rails Web 站点上有一些教程,可以完整地引导您创建一个简单的 Rails 应用程序(见 参 考资料). 这里的示例程序与之类似,因为正确开始构建 Rails 应用程序的方式是确定的.由于此介 绍的长度相对较短,所以我 极力 推荐 那些较长的教程中的一篇,以使得您能够打好更为全面的基 础.
示例应用程序是一个基本的通讯录.它
演示了创建应用程序的一般步骤: 1. 2. 3. 4. 生成模型(在此步骤中创建 MySQL 数据库和表). 生成应用程序(包括生成基本代码和目录). 启动 Rails(并配置数据库的访问). 创建一些内容(包括生成支架模型和控制器,并告知控制器去使用那个支架).
我们将详细研究每一个步骤.
生成 AddressBook 模型
对于任何应用程序,您需要做的第一件事情是为它创建一个存放数据的数据库.技术上这个步骤不必 最先进行,不过需要在早期完成;应该在编写任何 应用程序代码(甚至是自动生成的代码)之前创建 数据库,这应该是显然的.所以,让我们在 MySQL 数据库中创建一个数据库,并在此数据库中创建 第一张表. (阅读其他
文档以了解如何安装运行 MySQL 或其他 RDBMS.) 我们假定 MySQL 已经安装并且可用. 清单 2. 创建 MySQL 数据库和表
[~/Sites]$ cat AddressBook.sql CREATE DATABASE IF NOT EXISTS AddressBook; USE AddressBook; CREATE TABLE IF NOT EXISTS contacts ( id smallint(5) unsigned NOT NULL auto_increment, name varchar(30) NOT NULL default '', created_on timestamp(14) NOT NULL, updated_on timestamp(14) NOT NULL, PRIMARY KEY (id), UNIQUE KEY name_key (name) ) TYPE=MyISAM COMMENT='List of Contacts'; [~/Sites]$ cat AddressBook.
sql | mysql
在这第一张表中有些地方需要注意.最重要的是每一张表都必须拥有一个 id 列,列名称就是 id. Rails 使用 主键列 id 来完成各种记录保持和引用任务.域 created_on 和 updated_on 是不需要 的,不过,如果您使用了它们,那么 Rails 会自动地"在后台"维护它们;在大部分情况下使用这些时间 戳没有什么不好.所以,您还要添加的"真正" 数据就只是通讯录内容的名称. 另一个稍微古怪的方面是,Rails 为不同的内容使用单数和复数的名称.根据上下文,各种条目会被重