命名为单数或复数形式.表的名称应该使用复数格式. 我没有使用不规则复数单词的经验;datum 和 data 等单词可能会令 Rails 出现
问题.
生成 AddressBook 应用程序
既然已经拥有了一个能够交互的数据库,就可以创建 AddressBook 应用程序了.第一个步骤是简 单地运行 rails 来生成
基本目录和支架代码: 清单 3. 生成基本代码和目录
[~/Sites]$ rails AddressBook create create app/apis create app/controllers create app/helpers create app/models
create create create [……] create create create create [……] create create create [……]
app/views/layouts config/environments components public/images public/javascripts public/stylesheets script README script/generate script/server
我删减了运行 rails 的输出;所忽略了那些行只是提醒您已经创建的各种文件和目录.在您的
系统 上试运行它,浏览生成的所有文件. 我已经在代码中显示了一些最重要的文件和目录.
运行 Rails
创建了 AddressBook/ 目录和所需要的子目录后,您需要执行一次惟一的初始配置.首先,通过修改 YAML 配置文件来设置数据库,如下: 清单 4. 配置数据库访问
[~/Sites]$ cd AddressBook [~/Sites/AddressBook]$ head -6 config/database.yml # after editing development: adapter:
mysql database: AddressBook host: localhost username: some_user password: pass
word_if_needed
最后,您需要提供数据.Rails 附带了它自己的单一功能的 Web 服务器,即 WEBrick,非常适用于我 们的试验.您可能也会遵循 Ruby on Rails Web 站点上的说明来配置 Apache 或者其他服务器,以通 过 FCGI(或者普通的 CGI,但是普通的 CGI 将会较慢)向 Rails 应用程序提供服务. 清单 5. 启动 WEBrick 服务器
[~/Sites/AddressBook]$ ruby script/server -d => Rails application started on 0.0.0.0:3000 [2005-03-21 17:57:38] INFO WEBrick 1.3.1 [2005-03-21 17:57:38] INFO ruby 1.8.2 (2004-12-25) [powerpc-darwin7.8.0]
创建一些内容
要在 WEBrick 端口上看到一个欢迎页面,先前的步骤就足够了.例如,在我的本地系统中,现在可以 访问 gnosis-powerbook.local:3000/.不过,为了操作定制数据库,需要 生成稍 微多一些代码.可以使用脚本 generate 来完成此任务, 这个脚本创建在 AddressBook/ 应用程序 目录中: 清单 6. 支架模型和控制器代码的生成
[~/Sites/AddressBook]$ ruby script/generate model contact exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/contact.rb create test/unit/contact_test.rb create test/fixtures/contacts.yml [~/Sites/AddressBook]$ ruby script/generate controller contact exists app/controllers/ exists app/helpers/ create app/views/contact exists test/functional/ create app/controllers/contact_controller.rb create test/functional/contact_controller_test.rb create app/helpers/contact_helper.rb
注意,在相应的表名中,这里应该使用单数的 contact,而不是复数的 contacts. 现在需要编辑一个或多个生成的文件(只需稍加编辑)来让控制器去使用支架: 清单 7. 告知控制器去使用支架
[~/Sites/AddressBook]$ cat app/controllers/contact_controller.rb class ContactController < ApplicationController model :contact scaffo
ld :contact end
现在可以通过类似于 rails.server/contact/ 的 URL (在我的测试用例中是 gnosis-powerbook.local:3000/contact/)来查看和修改数据库的内容. 输入 一些数据后,它看起来如图 1 和图 2 所示: 图 1. 列出联系人
图 2. 编辑联系人
创建可定制的内容
前面的代码创建了一个查看和修改数据库的功能完全的界面,不过,所有格式化,显示以及业务逻辑 (比如本来就有的)都由 Rails 动态完成, 没有任何重大修改.为了创建一些更为定制的内容,需要 生成更多一些代码.现在我们所需要的是让 Rails 显式地写出它在运行时隐式地生成的 所有支架,以 使得我们能够修改它. 图 8. 显式控制器和视图代码生