在轨道上的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从事财务工作。最好将责任分开。)
-
而弗雷迪则研究任何与女王有关的事情。
等等
比喻的意思?
在这种情况下,控制器将是人 – 谁负责处理某些类型的请求。 而“行动”将是我想要完成的特定事情:
例如
- 得到一份文件或
- 编辑甚至是
- 创建一个新文档。
希望这能说明问题。