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

时间:2014-01-04 11:01:27

标签: ruby-on-rails ruby action controllers

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

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

  

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

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

谢谢!

3 个答案:

答案 0 :(得分:14)

控制器只是Ruby Class个文件,里面有一系列instance methods


基本解释

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

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

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


正确解释

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

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

每当您向Rails发送请求(访问URL)时,它首先使用ActionDispatch中间件将您的请求发送到正确的Class(controller)实例方法(action) ,然后你的代码用那个数据做了一些事情

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

答案 1 :(得分:5)

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

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

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

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

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

    < / LI>

因此操作控制器允许您将数据更改为模型(数据库),或者请求路径 查看您的数据,等

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

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

答案 2 :(得分:1)

类比的解释(简单解释而不太技术化)

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

e.g。

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

  

“Ngozi,请告诉我ABC.ASX EOFY的结果吗?”

是的,先生!

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

  

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

“当然!”是回应。

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

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

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

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

  • Sunita主要从事政治工作。有时候我会问她一些事情(例如写一份报告 - 这是一种“行动”,或者我会请她给我带来某种文件 - 另一种行为 - 以及她会这样做。我喜欢让Sunita从事政治工作和Ngozi来处理财务业绩。最好将他们的职责分开。)。

  • 弗雷迪参与任何与女王有关的事情。

等。等

类比的含义?

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

e.g。

  • 获取文件或
  • 编辑内容甚至
  • 创建新文档。

希望能够解决问题。