Ruby on Rails 支架

2024年12月18日 | 3 分钟阅读

脚手架

Scaffolding 是一种快速生成应用程序主要部分的方法。为了在一个操作中自动生成一个新资源的模型、视图和控制器集,使用了 scaffolding。

Scaffolding 是一种受 MVC 框架支持的技术,程序员可以在其中指定如何使用应用程序数据库。框架或编译器将其与预定义的代码模板一起使用,以生成应用程序可用于执行数据库条目 CRUD 的最终代码,有效地将模板视为构建更强大应用程序的“脚手架”。

Scaffolding 发生在程序生命周期的两个不同阶段,设计时和运行时。设计时 scaffolding 生成代码文件,稍后可以由程序员修改。运行时 scaffolding 动态生成代码。它允许模板设计的更改立即反映在整个应用程序中。

Rails 上的 Scaffolding

Scaffolding 因 Rails 框架而流行。

当将 line scaffold :model_name 添加到控制器时,Rails 将在运行时自动生成所有适当的数据接口。

也可以使用外部命令提前生成 scaffolding 的 Ruby 代码,即 rails generate scaffold model_name。生成的脚本将生成应用程序可用于与数据库交互的 Ruby 代码文件。

从 Rails 2.0 开始,不再支持动态 scaffolding。

嵌套的 Scaffolding

嵌套 scaffolding 是为 Rails 4.2 和 5 生成一组完美工作的嵌套资源的命令。

特点

  • 使用单个命令生成嵌套的子资源
  • 生成一堆完美工作的代码
  • 自动为 ActiveRecord 生成适当的模型关联
  • Haml 准备就绪

语法

要安装嵌套 scaffolding,请使用以下命令。


创建一个资源

要为 post 资源生成 scaffolding,请输入以下命令

scaffolding 生成器将在您的应用程序中构建几个文件和一些文件夹。

以下文件将通过 scaffolding 创建。

文件目的
db/migrate/20100207214725_create_posts.rb在数据库中创建 post 表
app/models/post.rbPost 模型
test/unit/post_test.rbpost 模型的单元测试工具
test/fixtures/posts.yml用于测试的示例 post
config/routes.rb已编辑,以包含 post 的路由信息
app/controllers/posts_controller.rbposts 控制器
app/views/posts/index.html.erb一个用于显示所有 post 索引的视图
app/views/posts/edit.html.erb一个用于编辑现有 post 的视图
app/views/posts/show.html.erb一个用于显示单个 post 的视图
app/views/posts/new.html.erb一个用于创建新 post 的视图
app/views/posts/_form.html.erb一个控制 edit 和 new 视图中使用表单的整体外观和感觉的部分
test/functional/post_controller_test.rbpost 控制器的功能测试工具
app/helpers/posts_helper.rb从 post 视图中使用帮助程序函数
test/unit/helpers/posts_helper_test.rbpost 帮助程序的单元测试工具
app/assets/javascripts/posts.js.coffee用于 post 编译器的 Coffee 脚本
app/assets/stylesheets/posts.css.scss用于 post 编译器的层叠样式表
app/assets/stylesheets/scaffolds.css.scss使 scaffolding 视图看起来更好的层叠样式表

许多有经验的开发人员避免使用 scaffolding,而是更喜欢从头开始编写所有或大部分源代码。因为它的自动生成的代码可能不适合您的应用程序。


Scaffolding 示例

让我们使用 scaffolding 生成以下示例。

步骤 1 创建一个应用程序

步骤 2 在示例应用程序中,创建 MVC 组件。

从上面的代码开始,首先移至应用程序目录。

步骤 3 创建数据库表 comments 和 post_id。

步骤 4 使用 rake 命令运行迁移。

步骤 5 启动 Web 服务器

输出

在您的浏览器中运行 https://:3000/posts

Ruby On rails scaffolding 1

转到新 post

Ruby On rails scaffolding 2

单击创建。

Ruby On rails scaffolding 3

单击编辑。

Ruby On rails scaffolding 4

单击更新。

Ruby On rails scaffolding 5

下载

下载此示例