2011-12-02 168 views
11

Rails,我应该在哪里定义Rails堆栈的每一层都可以识别的变量。应用程序全局变量

例如,我想有一个CUSTOMER_NAME='John'变量可以在辅助任务,控制器模型进行访问。我应该在哪里定义这个变量Rails应用程序?

我使用Rails的V2.3.2

+0

你在问什么不是变量,而是一个常数,意思是说:它不能从应用程序中设置。我在这里被搜索引擎误导,因为这里使用了错误的术语。 – Paul

回答

8

你想有一个真正全局常量?使用::COSTUMER_NAME。 你想要一个真正的全局变量?使用$COSTUMER_NAME(不鼓励)。 你想要一个请求全局变量?使用#env方法中的Hash

+1

你的意思是创建一个linux服务器全局变量? – Mellon

+1

'ENV'和'#env'是两回事。 'ENV'是表示Unix环境的全局常量。 '#env'是一个返回当前机架环境的控制器方法。 – Reactormonk

+0

我这样做:: TESTABC ='hola'并尝试从视图打印:: TESTABC并且它没有定义 –

14

的另一种方法是设置配置对象上的按键在config/application.rb,像这样:

MyApp::Application.configure do 
    # ... 
    config.my_key = 'some "global" value' 
end 

然后,您可以从任何地方访问my_key在你的应用程序只有这个:

MyApp::Application.config.my_key 

此外,麦克佩勒姆描述了一个类似的,但更全面的方法in his blog post

+0

是不是一个常数,但不是可变的?运行时可以在应用程序中更改吗? – Paul

+0

这是一个变量,可以在运行时更改。 –

相关问题