重返Ruby之路 Day14 --- Rails7学习(1)

271 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

保持代码简短和可读的 Rails 的一个主要哲学基础是 DRY 原则,它代表不要重复自己 (参见 Pragmatic Programmer,20 周年版[ Hun19])。一个系统中的所有知识都应该在 一个地方表达出来。Rails 使用 Ruby 的力量来实现这一点。在 Rails 应用程序中几乎 找不到重复; 在一个地方(MVC 体系结构的惯例常常建议这个地方)说出需要说的话,然后继续。对于习惯于其他 web 框架的程序员来说,对数据库模式的简单更改可能涉及十几个或更多的代码更改,这是一个启示——直到现在依然如此。

敏捷宣言中所表达的价值观

• Individuals and interactions over processes and tools

个人和交互重于过程和工具

• Working software over comprehensive documentation

在综合文档上使用软件

• Customer collaboration over contract negotiation

合同谈判中的客户协作

• Responding to change over following a plan

根据计划对变化做出反应

MVC架构的关系

image.png 在 Rails 应用程序中,传入的请求首先发送到路由器,路由器会计算出请求应该在应用 程序的哪个位置发送,以及应该如何解析请求。最终,这个阶段在控制器代码的某个 地方确定了一个特定的方法(用 Rails 的术语叫做 action)。操作可以查看请求中的数据, 可以与模型交互,并且它可能会导致调用其他操作。最终,操作为视图准备信息,视图向用户呈现一些东西。

Rails 处理传入请求,如下图所示。在这个示例中,应用程序先前显示了一个产品目录 页面,用户只需单击其中一个产品旁边的 Add to Cart 按钮。这个按钮发送到 http://localhost: 3000/line _ items? product _ ID = 2,其中 line _ items 是应用程序中 的一个资源,2 是所选产品的内部 ID。

image.png 路由组件接收传入请求并立即将其分离。请求包含一个路径(/line _ items?Product _ id = 2)和一个方法(此按钮执行 POST 操作; 其他常用的方法是 GET、 PUT、 PATCH 和 DELETE)。在这个简单的例子中,Rails 使用路径的第一部分 line _ items 作为控制器的名称,product _ ID 作为产品的 ID。按照惯例,POST 方法与 create ()操作相关 联。作为所有这些分析的结果,路由器知道它必须在 LineItem-sController 控制器类中 调用 create ()方法。

Create ()方法处理用户请求。在这种情况下,它找到当前用户的购物车(由模型管理的 对象)。它还要求模型查找产品 2 的信息。然后,它告诉购物车将该产品添加到自身。

既然购物车包含了新产品,我们就可以向用户展示它了。控制器调用视图代码,但在 调用之前,它会安排一些事情,以便视图可以从模型访问购物车对象。在 Rails 中,这种调用通常是隐式的; 同样,约定帮助链接特定的视图和给定的操作。