我在一家公司工作,我继承了他们的管理网站。在我之前的那个人并没有太多使用视图助手,所以这些助手中95%的代码都是我的。
我有一个问题,他有帮手:他的application_controller中的所有行,这意味着所有帮助都可用于所有视图。我有点因为我在两个不同的助手中创建了相同的命名方法,当然它取了最后一个而不是正确的一个。它让我疯狂地想知道如何加载与我所在的控制器没有任何关系的视图助手,并且选择了错误的方法。
我的问题是,离开应用程序控制器是个好主意吗?我认为标准只包括特定视图控制器的视图助手。因此,如果我有foo控制器和foo视图,则只应包含foo_helper。不是foo2_helper和foo3_helper。 (我知道如果我需要foo2_helper或foo3_helper你可以在控制器中放置“helper foo2”或“helper foo3”,但这可以选择,而不是自动。)
如果这是一个好主意,我似乎无法找到答案。我找到一个网站说这是默认的,真的??
由于
答案 0 :(得分:2)
ApplicationController
中的IMO助手特意意味着要在整个应用程序中共享(当我大声说出来时,我觉得这很明显。)
在单个控制器的视图中仅使用 的助手属于该单个控制器。
如果应用程序控制器中存在非全局帮助程序,则它们可能位于错误的位置。
答案 1 :(得分:0)
我在我的ApplicationController中保留helper :all
,因为我根据我使用它们的顺序命令我的助手,而不是依赖于控制器。
这样,您可以在两个不同的控制器中重复使用相同的帮助程序。
答案 2 :(得分:0)
是。它被称为DRY。
这并不意味着您应该将所有代码放在application_helper.rb
中并在rails项目的每个位置使用它,但它有时会有所帮助。