2013-02-14 28 views
1

我想在一個地方存儲一個值,比如我的應用程序的名稱(像一個常量),然後在整個應用程序中引用該值。如果我需要進行全局更改,我可以在一次完成,並在整個應用程序中更新。下面是我怎樣才能使它發揮作用一個想法:Rails:如何在一個地方存儲一個值並在其他地方引用它

在常量文件
APPLICATION_NAME = "FuzzyOnions"

在任何視圖現在我可以像這樣引用它:
你會用愛<%= Constants::APPLICATION_NAME %>應用程序。

我遇到的問題是,當我嘗試引用它在以下地方:<% @page_title = "<%= Constants::APPLICATION_NAME %>/About" %> rails會引發錯誤。如果我嘗試引用鏈接中的常量,例如​​

還會引發錯誤如果我嘗試引用不會在這些實例中引發錯誤的常量的另一種方法嗎?有沒有更好的方法來完成我想要做的事情?

+0

當你說「它拋出一個錯誤」的問題,這將是真的* *有益的,如果你能證明錯誤。否則,我們有一個可怕的時間來試圖找出錯誤是什麼。錯誤消息很好,但錯誤消息*和堆棧跟蹤*以及相關的代碼是最好的。請記住將來這樣做,因爲它可以幫助所有參與者。 – 2013-02-14 03:20:08

+0

嗨Ryan ..感謝您的回覆。當我提出問題時,我通常會發布錯誤消息。爲此,我覺得這將是其中的一個「哦,很傻,你不能這麼做 - 你在想什麼」明顯的類型交易。所以我趁機不要把這個問題與錯誤日誌混爲一談。 – sevens 2013-02-14 04:33:42

回答

2
<% @page_title = "<%= Constants<::APPLICATION_NAME %>/About" %> 

應該

<% @page_title = Constants::APPLICATION_NAME + "/About" %> 

和:

<%= link_to 'Contact Us <%= Constants::APPLICATION_NAME %>', page_path("contact-us") %> 

應該

<%= link_to 'Contact Us '+ Constants::APPLICATION_NAME, page_path("contact-us") %> 
+0

完美。謝啦。 – sevens 2013-02-14 04:37:45

0

你有一個在application.rb中 命名YourAppName(無論是)模塊這可能是工作:

module YourAppName 
    class << self 
     def [] s 
     constants[s] 
    end 
    def constants 
     # you could read this in as a yaml file, cache in a class var, etc. 
     {application_name: 'Fuzzy Onions', 
     url: 'fuzzy-onions.com'} 
    end 




YourAppName[:application_name] 
=> "Fuzzy Onions" 

AbServ[:url] 
=> "fuzzy-onions.com" 
相關問題