2011-03-29 46 views
8

我正在用首字母縮略詞定義一些活動記錄。 RvPark(休閒車公園)。當我將課程名稱標題化時,我會得到'Rv Park'。它真的應該是'RV Park'。有沒有一個好的方法來做到這一點?由於這個模型與其他模型共享代碼,我需要創建一個通用的解決方案,但我一直沒有能夠提出一個。在Rails中使用titleize作爲首字母縮寫詞

我的確看到了這方面的討論,但是沒有爲我工作的解決方案。任何有識之士都會感激

https://rails.lighthouseapp.com/projects/8994/tickets/2944-titleize-doesnt-take-all-uppercase-words-into-account

回答

4

UPDATE:縮寫支持was added to the Rails Inflector我張貼了這個之後。請參閱@ Anson對Rails 3.2及更高版本的回答。


這看起來像是titleize沒有設計的邊緣情況。問題在於capitalize裏面的呼叫總是會把RV變成Rv。

我會爲內部調用self.class.titleize的模型創建通用名稱函數,然後在RVPark模型中重載它。

+0

謝謝,這就是我最終做的,它的效果很好。 – 2011-08-08 23:56:13

+2

下面是一個更加強大的'titleize':https://github.com/granth/titleize – 2012-08-20 22:08:54

+0

@GabeKopley github.com/granth/titleize gem如何用於問題的場景?它看起來像正常的標題一樣工作 – RAJ 2013-04-27 17:00:43

13

您可以通過配置ActiveSupport::Inflector來完成此操作,其中提供了titleize方法。只需在初始化程序中定義您自己的inflections即可。

# config/initializers/inflections.rb 
ActiveSupport::Inflector.inflections do |inflect| 
    inflect.acronym 'RV' 
end 

重新啓動您的應用程序以獲取更改。現在titleize知道如何處理「RV」。火了一個Rails控制檯檢查出來:

> "RvPark".titleize 
=> "RV Park" 
> "rv".titleize 
=> "RV" 

查看更多很酷的東西,你可以用語調做鏈接的文檔。

相關問題