miles of mostly downhill singletrack." >> trail.save => true >> location = Location.new => #
nil, "state"=>nil}, @new_record=true> >> location.city = "Durango" => "Durango" >> location.state = "Co" => "Co" >> location.trails << trail => [#>, @attributes={"name"=>"Hermosa Creek", "id"=>1, "location_id"=>nil, "description"=>"22 miles of mostly downhill singletrack.", "difficulty"=>"easy"}, @new_record=false>] >> location.save => true >> hc = Trail.find 1 => #"Hermosa Creek", "location_id"=>"1", "id"=>"1", "description"=>"22 miles of m
ostly downhill singletrack.", "difficulty"=>"easy"}> >> hc.location => #"Durango", "id"=>"1", "state"=>"Co"} 清 单 5 向 数 据 库 添 加 了 一 条 赛 道 和 一 个 地 点 , 由 从 trails 中 的 location_id 列 指 向 locations 中的 id 列的外键管理。 模型对象足够健壮, 可以作为应用程序的构建基础。 但是, 视图就是另一回事了。 关系问题 把浏览器指向 localhost:3000/trails/show/1,看到图 2 所示的屏幕:
图 2. Rails 搭建没有关系字段
在这里看不出 trail 和 location 之间的关系。还会注意到,搭建非常原始:它没有图片、没 有 Ajax、没有公共标头或侧栏,也没有任何现代 Web 页面中常见的修饰。但重要的是通 过 搭建,只花了几分钟就得到了一个相对复杂的应用程序。您可能并不指望这个简单特性 能够生成健壮的代码,但是现在您可以把您的期望值抬高一点。 虽然搭建代表着对多数 Web 开发框架技术水平的显著提高,可它仍然有提高的余地,也应 当如此。但是如果在此基础上构建,您会发现获益极多。这就像是从 13 英里开始马拉松训 练,而不是从 4 英里开始。 搭建,像许多元编程技术一样,就是个运行时代码生成器。Rails 社区中的有些人认为搭建 是有局限的,认为搭建还没有丰富到可以处理多数应用程序。其他人则认为搭建很好用,搭 建的质量才是基本问题。这完全取决于应用程序的性质。如果正在构建一个重复的模式,那 么会从构成搭建基础的元编程技术得到巨大收获。如果模板是充分可调整、充分丰富的,那 么在框架中就能在更高层次上减少重复。现在开始介绍 Streamlined。 Streamlined:强化的搭建 自从 Rails 出现以来, 各种形式的和各种大小的 Rails 插件一直在提升所有应用程序开发的 抽象程度。像登录生成器这样的组件允许生成安全性。其他插件使得在 Rails 中处理 Web 服务更容易。Streamlined 以其产品级质量的应用程序生成器超越了搭建。与使用搭建时一 样,您可能需要扩展生成的代码,但初始的应用程序从它本身来说,其功能性令人惊讶。 请下载初始 alpha 版本的 Streamlined .gem 文件(参阅 参考资料) 。切换到保存 .gem 的 目录,并输入 gem install streamlined。所需要的所有内容都会自动安装。如果出现问题,可 以通过 streamlined 的博客得到优秀的支持,也有商业支持可选。 现在是把 Streamlined 投入实践的时候了。首先,输入 script generate streamlined location
trail,运行 Streamlined 生成器。当提示是否替换 locations 和 trails 控制器时,回答 y。 把浏览器指向 localhost:3000/locations/list 查看图 3 中的结果: 图 3. 默认的 Streamlined 应用程序
可以立
即让 Streamlined 生成一个更完整的应用程序。 Streamlined 列表与 图 1 中的列 把 表比较。区别是惊人的: 默认应用程序处理关系,单击其中一个 Edit 链接就可以看到。在下一节会看到更多关于关 系的内容,在这篇文章的第 2 部分中甚至会更多。 应用程序更好地运用样式表,并生成更复杂的样式表。 Streamlined 运用各种技术,例如在 表格周围使用
s,使得每个页面元素更容易进行样式处理。Streamlined 的 alpha 版本 的样式处理有限,但是预期未来的版本会突破这个限制。 应用程序在左侧有默认的
导航侧栏,在顶部有菜单和标头。这些菜单有更完整的