快速业务通道

使用ActiveScaffold增强Ruby on Rails的功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
d 生成器有几个重要的限制:

没有关 系支持:创建模型实例就意味着只能编辑实例的基本属性。如果模型需要定义一个关系(例如,Project 需要选中所有的 Organization),就需要手工修改页面将这个域添加到窗体上。

不能往返:对于 模型反复进行的更改不支持 “往返” 操作,这是因为所生成的代码是静态的。一旦代码被修 改之后,就不能在不丢失所做更改的情况下重新生成 scaffold 了。

缺少样式支持:所生成的页 面都是最基本的黑色和白色,只有最少量的 CSS 支持。不对基本的 HTML 标记使用样式就不支持通过 CSS 使用皮肤功能。

同时具有前两个限制说明 scaffold 实际上更像一个玩具,而不像一个有用 的工具。图 1 给出了 Rails 提供的默认 scaffold。

图 1. 标准的 Rails scaffold

使用ActiveScaffold增强Ruby on Rails的功能 - 编程入门网

Rails 还包括了 dynamic scaffold,它实际上提供了相同的代码支持,而不需要提前生成控件 代码。这并没有给您带来太多好处 — 因为大部分代码都位于 HTML 视图中,而且仍然需要视图代 码。通过将 scaffold 方法添加到控件类中可以启用动态 scaffold。

清单 5. 添加 Rails 的标 准 scaffold

class UsersController < ApplicationController
 scaffold :user
end

小心!

如果标准的 Rails scaffold 代码与 ActiveScaffold 一起使用,就可能会 出现问题。在切换到 ActiveScaffold 之前,请确保您已经清除了所有的 scaffold 控件和视图代码。

ActiveScaffold 默认显示

ActiveScaffold 为模型提供了一个更加有用的 UI。scaffold 的上述 3 个问题都已解决。首先,我们需要修改控件来使用 ActiveScaffold scaffold:

清单 6. 添加 ActiveScaffold scaffold

class UsersController < ApplicationController
 active_scaffold :user
 layout "activescaffold"
end

使用ActiveScaffold增强Ruby on Rails的功能(5)

时间:2011-11-29 Mike Perham

然后为所有 ActiveScaffold 页面添加标准布局(将下面的代码放入 app/views/layouts/activescaffold.rhtml 中):

清单 7. ActiveScaffold 标准布局

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <title>My Application</title>
  <%= javascript_include_tag :defaults %>
  <%= active_scaffold_includes %>
</head>
<body>
  <%= yield %>
</body>
</html>

现在用户清单看起来就好多了:

图 2. 标准的 ActiveScaffold scaffold

使用ActiveScaffold增强Ruby on Rails的功能 - 编程入门网

这个默认 显示可以很好地用于快速构建原型或开发。然而,与所有默认情况类似,稍加定制就可以使它更加适合于 您的特定需求。

定制视图

ActiveScaffold 有几个钩子函数可以让您定制如何显示模型。 可以给 active_scaffold 方法传递一个用来配置 scaffold 的可选配置块。

使用ActiveScaffold增强Ruby on Rails的功能(6)

时间:2011-11-29 Mike Perham

全局配置

ActiveScaffold 的全局配置允许对所有控件进行定制:

清单 8. 全局配置

class ApplicationController < ActionController::Base
 AjaxScaffold.set_defaults do |conf|
  conf.list.results_per_page = 20
 end
end

这个例子配置系统中所有的 ActiveScaffold scaffold 以便在显示记录时每页显示 20 个 结果。

本地配置

每个控件 scaffold 都可以使用自己特有的 ActiveScaffold 配置。

清单 9. 特定控件的本地配置

class UsersController < ApplicationController
 active_scaffold :user do |conf|
  conf.modules.exclude :update
  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号