什么是ApplicationController / Helper / view负责?

时间:2013-03-29 22:43:01

标签: ruby-on-rails

它们似乎与任何特定应用都没有直接关系。那么他们一般应该负责什么呢?例如,应用程序MVC的哪个部分应该放在应用程序级别而不是任何特定的级别。我们如何决定是否应该在帮助器或视图中放置一段特定的代码?

1 个答案:

答案 0 :(得分:0)

的ApplicationController

ApplicationController通常应被视为继承ActionController::Base的基类。虽然从技术上讲你可以将路由操作指向ApplicationController,但这是不好的形式。它应该被视为您的应用程序和Rails代码之间的入口点。

它提供了一个公共自定义层,您可以在其中创建可在子类中使用的方法。这些实用程序方法通常应限于直接依赖于HTTP请求上下文的内容(例如会话数据)。一个很好的例子是Clearance通过模块添加到ApplicationController的current_user方法。

ApplicationController进行子类化以添加可以使用这些方法的RESTful控制器。

我还发现它是rescue_from错误的有用位置,可以优雅地处理它们,而不是直接重定向到500错误页面。

视图/应用

我经常发现这是放置共享部分的好地方,比如导航和闪存标记。

助手

我发现我很少使用帮助器,而是更喜欢演示者。但是如果你通过需要视图上下文的应用程序有共同的逻辑,那么应用程序的助手就是存储它的地方。在视图/应用程序中共享部分中使用的助手通常都适合这里。