似乎它们与任何特定应用程序没有直接关系。那么他们一般应该负责什么?例如,应用程序 MVC 的哪一部分应该放在应用程序级别而不是任何特定的级别。我们如何决定是否应该将一段特定的代码放在帮助程序或视图中?
1 回答
应用控制器
通常ApplicationController
应将其视为继承的基类ActionController::Base
。虽然从技术上讲,您可以将路由操作指向ApplicationController
,但这是一种不好的形式。它应该被视为您的应用程序和 Rails 代码之间的入口点。
它提供了一个通用的定制层,您可以在其中创建可在子类中使用的方法。这些实用方法通常应仅限于直接依赖于 HTTP 请求上下文的事物(例如会话数据)。一个很好的例子是current_user
Clearance 通过模块添加到您的 ApplicationController 的方法。
子类化ApplicationController
以添加可以使用这些方法的 RESTful 控制器。
我还发现它是一个有用的地方,可以很好地rescue_from
处理错误并优雅地处理它们,而不是直接重定向到 500 错误页面。
意见/申请
我通常发现这是放置共享部分的好地方,例如导航和 Flash 标记。
帮手
I find I rarely use helpers at all, preferring presenters in their place. But if you have common logic through the app that needs a view context, the application's helper is the place to store it. Helpers used in shared partials in views/application usually fit here fairly well.