Rails和MVC隐喻

时间:2009-05-20 01:24:38

标签: ruby-on-rails model-view-controller controller

我正在根据我在RailsConf 2009中学到的东西重写我的应用程序。我理解模型,控制器和视图是相互关联的。但是,我遇到的一件事就是控制器的“适当”级别。

如果Rails模型(粗略地)映射到数据库表... 如果Rails View(粗略地)映射到浏览器页面......

Rails Controller映射到什么?

6 个答案:

答案 0 :(得分:3)

控制器是使用解决方案的逻辑,约束和条件将模型连接到视图的方法。

所以,我认为它可以映射到你解决方案的“大脑”。

答案 1 :(得分:1)

Controller实际上没有映射到您正在寻找的上下文中的任何内容。您必须将Controller视为用于将模型与视图放在一起的粘合剂。

模型列出您的数据。

视图列出了数据的表示。

Controller负责接收请求并检索正确的模型并查看...然后将结果呈现给用户。

答案 2 :(得分:1)

每个人都希望将它比作胶水或肌肉或其他东西,但它适合任何一种,因为它是模型和视图之间的翻译。肌肉不提供输入功能,只有输出,神经和感觉提供该类比的输入。胶水只是将两件事物粘在一起,它不会改变它们。

MVC中的控制器层负责从模型中取出数据并将其转换为可供查看者显示的表单。一个完美的例子是三个不同的页面,它们以相同(或非常相似)的形式呈现数据,但显示的数据来自非常不同的来源。在每种情况下,可能正在使用相同的视图代码,但是控制器是知道在模型上调用不同函数以获取要显示的数据并将其放入正确的集合名称以便视图可以查找和显示的人它,即使视图实际上不知道它正在显示什么

但这不是控制器层的唯一任务,因为它还必须将用户请求的转换转换为对模型的操作。用户单击链接或在字段中键入内容或滑动滑块,这可能会转换为模型上的一个或多个操作。它不应该是做出决策的实际业务逻辑,但是例如,如果你有一个复选框说“做三次这样做”但模型只有一次做某事的功能,控制器将负责调用模型的功能三时间来执行行动。

如果你有一个类比,我会用迈克尔的“大脑”回答。

答案 3 :(得分:0)

控制人是经理或协调员。将模型和视图视为公司内部的两个不同组(可能是销售和IT)。控制器是位于这两者之上的人,并确保他们一起玩得很好。

话虽如此,所有这些隐喻都会以某种方式存在缺陷。例如,控制器通常确保用户登录需要用户登录的页面。这并不适合我的隐喻或其他一些隐喻。

答案 4 :(得分:0)

控制器紧密映射到URL,尤其是在使用RESTFUL资源时。

我喜欢将URL视为应用程序的命令行界面。

答案 5 :(得分:-2)

如果你正在寻找一个MVC的比喻,帮助我在开始时让事情变得更容易,我想到了这样的事情:

  • 模型 - 你的骨架(帮助结构)

  • 控制器 - 你的肌肉(帮助一切运动起来并做到 所需的任务)

  • 查看 - 您的外表(这是世界如何看待的 其他两部分确实

这是我能够想出自己“获得它”的最简单方法,希望它有所帮助。同样,此部分中的Controler将“映射”到为您的应用程序工作的任何内容。