1

我在一家公司工作,我继承了他们的管理网站。我之前的那个人并没有太多使用视图助手,所以这些助手中 95% 的代码是我的。

我刚刚遇到了一个问题,他的 application_controller 中有 helper :all 行,这意味着所有帮助程序都可用于所有视图。我得到了一点,因为我在两个不同的助手中创建了相同的命名方法,当然它使用了最后一个而不是正确的。它让我发疯,想知道一个与我所在的控制器无关的视图助手是如何被加载的,并且选择了错误的方法。

我的问题是,留在您的应用程序控制器中是个好主意吗?我认为标准将只包含该特定视图控制器的视图助手。因此,如果我有 foo 控制器和 foo 视图,则应该只包含 foo_helper。不是 foo2_helper 和 foo3_helper。(我知道如果我需要 foo2_helper 或 foo3_helper,您可以将“helper foo2”或“helper foo3”放在控制器中,但这将是选择,而不是自动。)

我似乎无法找到答案,这是否是一个好主意。我发现一个网站说这是默认设置,真的吗?

谢谢

4

3 回答 3

2

中的 IMO 助手ApplicationController专门用于在应用程序中共享(我想当我大声说出来时,这很明显)。

在单个控制器视图中使用的助手属于该单个控制器。

如果应用程序控制器中有非全局助手,他们很可能在错误的位置。

于 2011-09-09T17:03:32.613 回答
0

是的。它被称为干。这并不意味着您应该将所有代码放入application_helper.rb并在 Rails 项目的每个地方使用它,但它有时会有所帮助。

于 2012-01-12T15:28:32.827 回答
0

我保留helper :all在我的 ApplicationController 中,因为我根据我使用它们的目的来订购我的助手,而不是取决于控制器。

这样,您可以在两个不同的控制器中重用相同的助手。

于 2011-09-09T17:00:42.320 回答