为什么constants.rb中的这个变量需要声明为全局变量?

时间:2012-05-07 08:20:54

标签: ruby-on-rails global-variables constants

我想要一个列表可供整个应用程序使用,所以我把它放在constants.rb中:

hebrew_consonants = ["א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "ך", "כ", "ל","ם","מ","ן", "נ", "ס", "ע", "ף", "פ", "ץ", "צ", "ק", "ר", "ש","ת"]

在application_controller.rb中,我按如下方式使用列表:

def is_hebrew?(query)
    (0...query.length).each do |index|
        return true if hebrew_consonants.include?(query[index])
    end
    return false
end

我重新启动了服务器,该应用程序抱怨说它不知道该列表。我在其声明及其参考($ hebrew_consonants)之前放了美元符号,并且它起作用了。使用我的其他常量,它们只是起作用。我想我认为他们只是因为在那个班级中而被认为是全局变量。为什么这个表现不同?

谢谢

1 个答案:

答案 0 :(得分:1)

首先确保您的constants.rb文件位于/config/initializers/。其次,尝试使用hebrew_constants的所有大写字母。从SO question中的评论来看,这听起来像是必要的。

相关问题