跳转到内容

Ruby on Rails/入门/模型-视图-控制器

来自维基教科书,开放书籍,为开放世界
上一页:入门/不要重复自己 索引 下一页:入门/约定优于配置

模型-视图-控制器

[编辑 | 编辑源代码]
Rails 中的 MVC 架构

如前所述,Rails 依赖于 MVC 模式。模型-视图-控制器比传统概念有一些优势

  • 它将您的业务逻辑与(基于 HTML 的)视图分开
  • 使您的代码整洁,并保持在一个地方

模型表示数据库中的信息和数据。它尽可能独立于数据库(Rails 自带 O/R-Mapper,允许您更改为应用程序提供数据的数据库,但不更改应用程序本身)。模型还在数据进入数据库之前进行验证。大多数情况下,您将在数据库中找到一个表,并在应用程序中找到一个相应的模型。

视图是应用程序的展示层。视图层负责渲染您的模型为一种或多种格式,例如 XHTML、XML 或甚至 Javascript。Rails 支持任意文本渲染,因此支持所有文本格式,但也包括对 Javascript 和 XML 的显式支持。在视图中,您将找到(大多数情况下)带有嵌入式 Ruby 代码的 HTML。在 Rails 中,视图默认情况下使用ERb 实现。

控制器

[编辑 | 编辑源代码]

控制器连接模型和视图。在 Rails 中,控制器作为ActionController 类实现。控制器知道如何处理来自模型的数据,以及如何将数据传递到视图。控制器不应包含任何与数据库相关的操作(例如,在数据保存到数据库之前修改数据)。这应该在适当的模型中处理。

当您在视图中经常使用的代码太大/太乱,无法放在视图中时,您可以在助手内为它定义一个方法。在助手内定义的所有方法都可以在视图中自动使用。

最佳实践

[编辑 | 编辑源代码]

当前的最佳实践包括

  • 胖模型和瘦控制器
  • 业务逻辑应该始终放在模型中
  • 视图应该包含最少的代码
  • 使用助手!
  • 使用模型
  • DRY(不要重复自己)
华夏公益教科书