有人可以告诉我在轨道上的ruby中控制器和操作之间的区别吗?
我从官方的导轨指南中获取了这个定义:
控制器的目的是接收应用程序的特定请求。路由决定 哪个控制器接收哪些请求。通常,每条路线都有多条路线 控制器和不同的路由可以由不同的动作提供。每个动作的目的都是 收集信息以便将其提供给视图。
我很困惑。 请尽量让它变得简单,因为我是新手!
谢谢!
答案 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。
希望能够解决问题。