在轨道上的ruby中控制器和操作之间有什么区别?

有人能告诉我在轨道上的ruby中控制器和动作之间的区别吗?

我从官方的rails指南中获取了这个定义:

控制器的目的是接收应用程序的特定请求。 路由决定哪个控制器接收哪些请求。 通常,每个控制器都有多条路由,不同的路由可以通过不同的操作提供服务。 每个操作的目的是收集信息以将其提供给视图。

我很迷惑。 请尽量让它变得简单,因为我是新手!

谢谢!

控制器只是Ruby类文件,里面有一系列实例方法


基本解释

Rails控制器基本上是保存动作(方法)的文件

每次访问Rails应用程序时,都会向系统发送请求。 Rails中的各种技术将请求route到某个action ,您的代码可以使用传递的数据执行某种action (因此命名)。 操作保留在controllers以提供应用程序结构

因此,如果您访问http://yourapp.com/users/new ,它会告诉Rails在users控制器中加载new方法。 您可以在控制器中拥有任意数量的操作,但是您必须告诉Rails routes系统它们在那里,否则它们将无法访问


正确解释

Rails Controllers只是Ruby Classes,存储一系列动作

“actions”(实例方法)处理传递的数据( params )以创建可以传递给模型或在其他方法中使用的对象

每当您向Rails发送请求(访问URL)时,它首先使用ActionDispatch中间件将您的请求发送到正确的类( controller )实例方法( action ),然后您的代码对该数据执行某些操作

您作为开发人员的工作是将正确的控制器与正确的模型连接起来,在适当的时间向用户显示正确的数据

免责声明 :我不在Rails中编写代码(从未这样做过)。 我编写Sinatra模块化应用程序并使用MVC模型。

首先需要澄清MVC模型。 MVC是一种对Web应用程序(在RoR中)或用户界面进行编程的方法。 所以MVC代表模型 – 视图 – 控制器 。 我会尝试解释一下,但为了理解这一点,你需要练习和玩它。

  • 模型 :如果删除抽象层,那就是你的数据库方案。 应用程序互连的方式以检索信息。

  • 视图 :检索和提供这些信息的方式。 基本上就是您或客户在浏览器中看到的内容。

  • 控制器 :控制器与程序交互以生成请求的视图或更改模型。 在访问包含统计信息的图表时请求视图,并在输入数据时更改模型。 在Rails生态系统中, ActionController是一个包含一组预定义方法的 ,可帮助您执行更简单,更快速的标准Controller操作,如更新表单等。

因此, Action Controller允许您将数据更改为模型(db),或请求路由 查看数据等。

动作没有与控制器分开,它基本上是控制器所做的:-)。 其他一切都是静态的

如果您觉得这些概念仍然难以掌握,请尝试在Sinatra中构建一个非常基本的模块化应用程序,并且您将对事物的工作方式有一个基础视图。

类比的解释(简单的解释,没有太过技术性)

我在繁忙的办公室工作。 我向我的员工发出命令(即“请求”)以让他们去做事情。

例如

有时我想要一份文件,所以我可以阅读。

“Ngozi,请给我ABC.ASX EOFY结果?”

是的先生!

有时我会要求我的员工编辑现有文档:

“Sunita,你能编辑关于工会地址状态的报告吗?”

“当然!”是回应。

我根据他们的工作类型组织我的员工

但我有一点问题…..我有10,000个不同类型的文件。 有时我想得到:(I)体育成绩和其他我想要的时间:(ii)晚间新闻,而在其他时候我仍然想要:(iii)唐纳德特朗普最新上午4点推文的集合。

所以我创建了一个新系统。 我有一名工作人员直接负责每种类型的事情。

  • Ngozi处理ASX(澳大利亚证券交易所)财务业绩。 当我想要Ngozi做某事(即执行某种行动)时,我告诉他该怎么做。

  • Sunita主要从事政治工作。 有时我会问她一些事情(例如写一份报告 – 这是一种’行动’,或者我会让她给我带来某种文件 – 另一种行为 – 她会这样做。我会这样做。喜欢让Sunita从事政治工作,让Ngozi从事财务工作。最好将责任分开。)

  • 而弗雷迪则研究任何与女王有关的事情。

等等

比喻的意思?

在这种情况下,控制器将是人 – 谁负责处理某些类型的请求。 而“行动”将是我想要完成的特定事情:

例如

  • 得到一份文件或
  • 编辑甚至是
  • 创建一个新文档。

希望这能说明问题。