了解 Ruby on Rails 的基础知识:HTTP、MVC 和路由

2025-06-10

了解 Ruby on Rails 的基础知识:HTTP、MVC 和路由

学习完第一门编程语言,你可能会问,编程能做什么:人工智能/机器学习?硬件开发?移动应用?或者,你想开始开发 Web 应用程序!:)

在这里,我们将使用 Ruby on Rails Web 框架了解 Web、路由和 MVC 架构的工作原理。让我们深入 Web 世界。

在学习使用 Rails 进行 Web 开发之前,我强烈建议先学习Ruby

网络如何运作?

Web 包含许多层(应用层、TCP 层、Internet 层、硬件层),它们彼此相连。但本质上,它通过HTTP(超文本传输​​协议)运行。

超文本传输​​协议 (HTTP) 是一种用于分布式、协作式超媒体信息系统的应用协议。——维基百科

HTTP工作方式类似于客户端-服务器模型中的请求-响应循环。

我们有一个 Web 浏览器(例如 Google Chrome)。输入www.google.comURL,客户端向服务器提交 HTTP 请求(请求消息)。服务器返回 HTTP 响应(响应消息——在这种情况下,响应是来自 Google 网站的 HTML)。

客户端发出请求并接收来自服务器的响应。客户端处理 UI 和用户交互。在服务器上,我们可以存储和检索数据(在数据库中),在后台处理逻辑(工作线程/作业),以及许多其他操作。

如果你想深入了解,我会推荐一些资源。我非常喜欢Preethi的帖子。这里有一个由三部分组成的系列:

MVC 架构和 Rails Routes

现在我们了解了 Web 的工作原理,我们将研究 MVC 架构和 Rails 路由。

MVC 代表模型、视图和控制器。

在这个架构中,我们在模型、视图和控制器之间实现了“关注点分离”。每个部分都有各自的职责。让我们深入探讨每个部分。

模型

“维护对象和数据库之间的关系并处理验证、关联和事务”

这意味着模型将与数据库保持极强的关联性。每个模型(可以)代表一张数据库表(如果是 SQL 数据库)。该模型对象拥有从数据库表中检索、保存、编辑和删除数据的功能(继承自 ActiveRecord — Rails 类)。我们将模型对象用作应用程序和数据库之间的中间层。

除了与数据库的关系之外,该模型还可以创建模型之间的验证关联。

看法

“以特定格式呈现数据,由控制器呈现数据的决定触发。”

这是请求响应的呈现形式。此呈现形式可以采用多种格式:PDF、HTML、JSON 等。视图的最终结果可能是用户界面 (UI)——“客户端”的一部分。

对于网络上的大多数页面,视图都是使用 CSS 和 JS 样式的 HTML。但我们可以在旅行数字产品上实现用户行为的 PDF 文件,以便向所有员工展示人们如何使用他们的网站。

控制器

“应用程序内引导流量的功能,一方面查询模型中的特定数据,另一方面将数据(搜索、排序)组织成适合给定视图需求的形式。”

控制器是“Maestro”。它负责流程:使用模型进行查询、解析数据并决定以何种格式呈现数据。

Rails 应用程序上的 MVC 和路由循环

想象一下我们在一家旅游初创公司工作。产品的一部分是向旅行者提供一系列关于旅行故事和技巧的精彩文章。

站在旅行者的角度想想,www.worldpackers.com/articles你打开一个漂亮的页面,上面列出了一堆精彩的文章。

当你在浏览器中输入此 URL 时,它会向服务器发出请求。服务器中有一个 Rails Web 应用程序。Rails 路由器会验证是否有与请求的 URL 匹配的条目。

我们只需要配置这条线路的路线:

resources :articles 
Enter fullscreen mode Exit fullscreen mode

这将为文章创建 RESTful 路由。运行bundle exec rake routes,它将显示已创建的路径列表。

HTTP VERB   PATH                          Controller#Action
GET         /articles(.:format)           articles#index
POST        /articles(.:format)           articles#create
GET         /articles/new(.:format)       articles#new
GET         /articles/:id/edit(.:format)  articles#edit
GET         /articles/:id(.:format)       articles#show
PATCH       /articles/:id(.:format)       articles#update
PUT         /articles/:id(.:format)       articles#update
DELETE      /articles/:id(.:format)       articles#destroy

Enter fullscreen mode Exit fullscreen mode

HTTP 动词可以是GETPOSTPATCHPUTDELETE。我们知道 Rails 如何将它们分别映射PATHcontrolleraction。点击此处了解更多信息。

在我们的例子中,服务器将接收/articles路径和GET作为 HTTP 动词。它将映射到ArticlesControllerindex操作。

在控制器中,ArticlesController我们使用模型 Article获取数据库中的所有文章,并将视图呈现 index.html.erb服务器响应(UI)。

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end
end
Enter fullscreen mode Exit fullscreen mode

按照惯例,此控制器将在中呈现视图views/articles/index.html.erb。基本上,它是一个由 Ruby 驱动的纯 HTML 文件。

Rails 请求-响应周期是您开始学习 Web 开发时需要了解的首要概念之一。

用户执行操作(向服务器发出请求),Rails 应用程序通过路由器将 URL 路径映射到正确的控制器。在控制器中,我们可以对一个模型(或多个模型)执行所有操作——获取、保存、编辑、删除数据——并将视图渲染给用户。

就这样!

我们在这里学到了很多东西。希望你们喜欢这些内容,并进一步了解 Rails 的 MVC 架构和路由工作原理。

这是我学习和掌握 Rails 和 Web 开发之旅的又一步。您可以在我的Renaissance Developer 出版物中查看我的完整学习历程记录。

如果你想要完整的RubyRails课程,学习实际编程技能并构建项目,不妨试试“一个月 Ruby 训练营”“Rails 训练营”。到时候见☺

玩得开心,继续学习和编码。

TwitterMediumGithubLinkedIn。☺

鏂囩珷鏉ユ簮锛�https://dev.to/teekay/understanding-the-basics-of-ruby-on-rails-http-mvc-androutes-37j4
PREV
何时使用这些 Nodejs 框架?Express、Koa、Nest、Socket.io、Meteor.js
NEXT
学习 Python:从零到大师