我一直得到
uninitialized constant ActionView::CompiledTemplates::BLAHBLAH1
当我在 erb 文件中使用 BLAHBLAH1
时,它不起作用,但如果我在它前面加上帮助程序名称BlahBlahHelper::BLAHBLAH1
它就可以工作了。帮助程序blahblah_helper.erb
包含以下内容:
module BlahBlahHelper
BLAHBLAH1 = 0
end
视图的文件名为 blah_blah.html.erb
。我知道我有正确的命名约定供助手查看,因为我已经测试过了。
帮助程序位于视图的子目录中会是一个问题吗?
有没有办法让它工作而不必在帮助程序名称前面加上前缀?
仅当帮助程序模块具有与控制器名称匹配的名称时,才会自动加载该模块。
因此,在您的情况下,您有 2 个选择:
1)
include BlahBlahHelper # in controller, same as `helper BlahBlahHelper`
2)
将控制器重命名为 BlahBlahController
。
好的,正如 edikgat 试图在评论中指出的那样,这里的问题是常量解决方案。
要使用常量,您必须使用全名引用它,因为常量不包含在模块中,只有它的方法。
通读本指南,了解在 Rails 中加载常量。
发生这种情况是因为像其他模块一样的帮助程序仅包含查看其方法。无法包含常量