我用一个函数创建了一个简单的帮助器并将它放在相关的controller_helper中,我注意到该函数在整个应用程序视图中都是有效的。
为什么?帮助者不应只对他的控制者有效吗?
答案 0 :(得分:2)
该过程如下:
如果您处于属于控制器foo
的视图中并且您调用了名为my_helper
的帮助程序:
如果在foo
的助手中定义,则从此处执行
如果没有在foo
帮助器中定义但在另一个帮助器中定义,比如bar
,则从那里执行
如果不在foo
或bar
中,则会在application_helper
中进行检查。如果此处不存在,则会引发错误。
答案 1 :(得分:0)
这是有道理的,但这不是完整的故事。我有一个控制器MainController
和一个控制器AlsoController
,并在每个辅助模块中定义了一个名为wherefrom
的帮助程序,即MainHelper
和AlsoHelper
。但是,如果我尝试在wherefrom
视图中使用also
,则会使用MainHelper
中定义的帮助程序而不是AlsoHelper
中的帮助程序。