红宝石在轨道上的应用流程

01

的07

Rails应用程序流程

当您'从头到尾重新编写自己的程序时,它很容易看到流量控制。程序从这里开始,有'一个循环,方法调用在这里,它'全部可见。但在Rails应用程序中,事情并不那么简单。使用任何类型的框架,您放弃对诸如"flow"之类的事物的控制,以支持更快或更简单的方式来执行复杂的任务。在Ruby on Rails的情况下,流量控制都是在后台处理的,所有这些都是(或多或少)模型,视图和控制器的集合。

02

of 07

HTTP

任何web应用程序的核心都是HTTP。HTTP是您的web浏览器用于与web服务器交谈的网络协议。这就是像"request,""GET"and"POST"come from,they're这个协议的基本词汇。然而,由于Rails是对此的抽象,我们赢得了'花了很多时间谈论它。

打开网页时,单击链接或在web浏览器中提交表单,浏览器将通过TCP/IP连接到web服务器。然后浏览器发送服务器a"请求,"将其想象成浏览器填写特定页面上请求信息的形式的邮件。服务器最终将web浏览器发送为"响应。"Ruby on Rails不是web服务器但是,web服务器可以是Webrick的任何内容(从命令行启动Rails服务器时通常会发生什么)到Apache HTTPD(为大部分web供电的web服务器)。web服务器只是一个促进者,它将请求并将其交给您的Rails应用程序,该应用程序生成响应并传递回服务器,服务器又将其发送回客户端。所以到目前为止的流程是:

客户端->服务器->[Rails]>服务器->客户端

但是"轨道"是我们真正感兴趣的,让我们深入研究。

03

of 07

打印机

Rails应用程序对请求所做的第一件事就是将其通过交换机发送。每个请求都有一个URL,这是显示在web浏览器地址栏中的内容。如果URL有意义并且URL包含任何参数,则路由程序决定了该URL要执行的操作。打印机配置为配置/路线

首先,要知道Android的最终目标是将URL与控制器和操作相匹配(稍后将详细介绍)。由于大多数Rails应用程序都是RESTful的,RESTful应用程序中的内容使用资源表示,因此您可以看到典型Rails应用程序中的resources:posts等行。这与帖子控制器匹配像/帖子/7/编辑的URL,帖子上的编辑操作,ID为7。打印机只是决定请求去哪里。所以我们的[Rails]块可以扩展一点。

打印机->[Rails]

04

of 07

控制器

现在打印机已经决定将请求发送到哪个控制器,以及该控制器上的哪个操作,它会发送它。控制器是一组相关动作,它们都捆绑在一个类中。例如,在博客中,查看,创建,更新和删除博客帖子的所有代码都捆绑在名为"帖子"的控制器中;这些操作只是本课程的正常方法。控制器位于app/Controllers

所以让'说网络浏览器发送了/帖子/42的请求。打印机决定这是指Post控制器,show方法and要显示的帖子的ID是42,因此它使用此参数调用show方法。show方法不负责使用模型检索数据并使用视图创建输出。所以我们扩展的[Rails]块现在是:

打印机->控制器#操作

05

of 07

模型

该模型既是最容易理解的模型,也是最难实现的模型。该模型负责与数据库交互。解释它的最简单方法是模型是一组简单的方法调用,它们返回处理数据库中所有交互(读取和写入)的普通红宝石对象。因此,在博客示例之后,控制器将用于使用模型检索数据的API看起来像发现(params[:id])参数是从URL,Post解析的Android模型。这会产生SQL查询,或者需要做任何事情来检索博客文章。模型位于app/Models

重要的是要注意并非所有操作都需要使用模型。仅当需要从数据库加载数据或保存到数据库时才需要与模型交互。因此,我们在我们的小流程图中在其后面加上问号。

Router->Controller#action->型号?

06

of 07

视图

最后,开始生成一些HTML的时间。HTML不由控制器本身处理,也不由模型处理。使用MVC框架的要点是划分一切。数据库操作保持在模式下,HTML生成保持在视图中,控制器(由打印机调用)同时调用它们。

HTML通常使用嵌入式Ruby生成。如果您'熟悉PHP,也就是说带有PHP-cod的HTML文件嵌入其中,然后嵌入式红宝石将非常熟悉。这些视图位于app/views中,控制器将调用其中一个来生成输出并将其发送回web服务器。控制器使用模型检索的任何数据通常都将存储在实例变量中,由于某些Ruby magic,该实例变量将作为视图中的实例变量提供。此外,嵌入式Ruby不需要生成HTML,它可以生成任何类型的文本。您'在为RSS,JSON等生成XML时会看到这一点。

该输出被发送回web服务器,然后将其发送回web浏览器,从而完成该过程。

07理赔小知识

of 07

完整图片

而这个'这是一个请求Ruby on Rails web应用程序的完整生命周期。

  1. Web浏览器-浏览器在单击链接时通常代表用户提出请求。
  2. Web服务器-Web服务器接受请求并将其发送到Rails应用程序。
  3. 打印机-打印机,Rails应用程序的第一部分,用于查看请求,解析请求并确定它应该调用哪个控制器/动作对。
  4. controller-控制器被调用。控制器's作业是使用模型检索数据并将其发送到视图。
  5. 模型-如果需要检索任何数据,则使用该模型从数据库获取数据。
  6. 查看-数据被发送到视图,在该视图中生成HTML输出。
  7. Web服务器-生成的HTML被发送回服务器,Rails现在完成了请求。
  8. Web浏览器-服务器将数据发送回Web浏览器,并显示结果。

科普_1