在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"
查看链接的文档,了解更多有关变形的精彩内容。