2011-12-02 126 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

這是一個變量,可以在運行時更改。 –

相關問題