在Rails 4中,AbstractController和ActionController有什么区别?

6
在Rails 4中,AbstractController和ActionController有什么区别?它们分别是做什么的,又有何不同之处?
AbstractController是一个抽象类,提供了一些基本的控制器功能,如参数解析、模板渲染等。它是其他控制器类的基础。
ActionController是AbstractController的子类,它添加了处理HTTP请求和响应的能力。它还提供了许多常用的方法,如redirect_to和render等。
简而言之,AbstractController提供了控制器的基本功能,而ActionController则扩展了这些功能以处理HTTP请求和响应。
2个回答

4
AbstractController 提供了结构,ActionController 是该结构的一个实现,与 web 相关的渲染。在 AbstractController 的核心是 render 方法。抽象控制器以尽可能通用的方式布置需要发生的事情(规范化参数、处理格式等),但它不涉及任何具体细节。 ActionController 是该 AbstractController 的特定实现。 ActionController::Base 类提供了一个添加了特定 web 特色的 render 方法。它关注像 requestresponsehttp 等在 AbstractController 中不存在的事物。希望这可以帮助到您。

1

AbstractController::Base 是一个低级别的 API。没有人应该直接使用它,子类(如 ActionController::Base)应该提供自己的渲染方法,因为根据上下文,渲染意味着不同的事情。

这是直接从文档中摘取的:http://api.rubyonrails.org/classes/AbstractController/Base.html


Benjamin Tan,是的我知道,这个答案的重点是为了补充解释rails api... - user2107733

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接