Board logo

标题: 使用 ActiveScaffold 增强 Ruby on Rails 的功能(2) [打印本页]

作者: look_w    时间: 2018-7-20 10:44     标题: 使用 ActiveScaffold 增强 Ruby on Rails 的功能(2)

Rails scaffold 现在我们已经充实了模型,接下来可以在上面放一个 Web 界面。Rail 提供了一个 “scaffold” 生成器,它可以为某个给定模型生成一组基本的 CRUD 页面。下面的命令用来为这个模型创建标准的 Ruby scaffold:即一个具有一组 CRUD 方法和一组对应的模型 HTML 视图的控件。
清单 4. 生成标准的 Rails scaffold
1
2
script/generate scaffold user
script/generate scaffold organization




scaffold 生成器有几个重要的限制:
同时具有前两个限制说明 scaffold 实际上更像一个玩具,而不像一个有用的工具。图 1 给出了 Rails 提供的默认 scaffold。
图 1. 标准的 Rails scaffold Rails 还包括了 dynamic scaffold,它实际上提供了相同的代码支持,而不需要提前生成控件代码。这并没有给您带来太多好处 — 因为大部分代码都位于 HTML 视图中,而且仍然需要视图代码。通过将 scaffold 方法添加到控件类中可以启用动态 scaffold。
清单 5. 添加 Rails 的标准 scaffold
1
2
3
class UsersController < ApplicationController
  scaffold :user
end




小心!
如果标准的 Rails scaffold 代码与 ActiveScaffold 一起使用,就可能会出现问题。在切换到 ActiveScaffold 之前,请确保您已经清除了所有的 scaffold 控件和视图代码。
ActiveScaffold 默认显示 ActiveScaffold 为模型提供了一个更加有用的 UI。scaffold 的上述 3 个问题都已解决。首先,我们需要修改控件来使用 ActiveScaffold scaffold:
清单 6. 添加 ActiveScaffold scaffold
1
2
3
4
class UsersController < ApplicationController
  active_scaffold :user
  layout "activescaffold"
end




然后为所有 ActiveScaffold 页面添加标准布局(将下面的代码放入         app/views/layouts/activescaffold.rhtml 中):
清单 7. ActiveScaffold 标准布局
1
2
3
4
5
6
7
8
9
10
11
12
<!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 这个默认显示可以很好地用于快速构建原型或开发。然而,与所有默认情况类似,稍加定制就可以使它更加适合于您的特定需求。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0