我曾经使用我的Rails 2.3.8应用程序将Global变量放在environment.rb中,例如:
MAX_ALLOWD_ITEMS = 6
它似乎在Rails 3中不起作用。我尝试将它放在application.rb中并且没有帮助。
你有什么建议?
答案 0 :(得分:47)
如果您已尝试按照Ryan的建议重新启动服务器,请尝试将其放入application.rb
中,如下所示:
module MyAppName
class Application < Rails::Application
YOUR_GLOBAL_VAR = "test"
end
end
然后,您可以使用控制器,视图或任何位置的命名空间来调用它。
MyAppName::Application::YOUR_GLOBAL_VAR
另一种选择是使用settingslogic之类的东西。使用settingslogic,您只需创建一个yml配置文件和一个指向配置文件的模型(Settings.rb)。然后,您可以使用以下选项在rails应用中的任意位置访问这些设置:
Settings.my_setting
答案 1 :(得分:7)
我通常使用application_helper.rb 这就是它的样子:
module ApplicationHelper
def my_global_variable
my_global_variable = "Helloworld!"
end
end
然后我可以将my_global_variable放在任何地方作为函数。
答案 2 :(得分:2)
如果你真的在 config / environment.rb 中定义它,我可以解决问题的唯一方法是使用rails server
运行服务器,然后将变量放入 config / environment.rb ,在某个地方的视图或控制器中引用它,然后尝试加载我的应用程序的特定部分。
如果我停止服务器并再次启动它并再次尝试访问该视图或控制器,那么它可以工作。我估计你刚刚没有重启你的服务器。
答案 3 :(得分:1)
我通常使用所有全局网站设置创建内部config / initializers / yaml(yml)文件。 记得每次更改任何内容时都要重新启动服务器。
答案 4 :(得分:0)
我不知道向environment.rb添加变量的解决方案是否实际上可以在Rails3中工作 - 具体来说,如果你没有在模块定义中定义变量,如下所示:
module MyConfig
Max_ints = 5
end
如果您只是将其作为一个简单的定义包含在内,那么您将无法使用Max_ints。或者至少那是我在实验时发现的事情。我还认为使用初始化器/文件夹的建议可能是一个更好的解决方案,易于使用。见Permanent variable in Rails