在Rails中使用titleize作为首字母缩略词

我用缩写词定义了一些活跃的记录。 RvPark(休闲车公园)。 当我为class级名称命名时,我会得到’Rv Park’。 它应该是’RV Park’。 有没有一个很好的方法来做到这一点? 由于这个模型与其他模型共享代码,我需要创建一个通用的解决方案,但我无法想出一个。

我确实看到了对此的讨论,但没有一个解决方案对我有用。 任何见解都表示赞赏。

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

更新:我发布此内容后,Rails Inflector中添加了首字母缩略词支持。 请参阅@ Anson对Rails 3.2及更高版本的回答。


这看起来像titleize的边缘情况不适合。 问题是内部的capitalize调用总是将RV变成Rv。

我将为内部调用self.class.titleize的模型创建一个通用名称函数,然后在RVPark模型中重载它。

您可以通过配置提供titleize方法的ActiveSupport :: Inflector来完成此操作。 只需在初始化程序中定义自己的变形 。

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

重新启动您的应用以获取更改。 现在titleize知道如何处理“RV”。 启动Rails控制台以检查它:

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

查看链接的文档,了解更多有关变形的精彩内容。