我用缩略词定义了一些活跃的记录。 RvPark(休闲车公园)。当我为课程名称命名时,我会得到'Rv Park'。它应该是'RV Park'。有没有办法做到这一点?由于这个模型与其他模型共享代码,我需要创建一个通用解决方案,但我无法想出一个。
我确实看到了对此的讨论,但没有一个解决方案对我有用。任何见解都表示赞赏。
答案 0 :(得分:16)
您可以通过配置提供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"
请参阅链接的文档,了解更多有关变形的精彩内容。
答案 1 :(得分:3)
更新:发布此内容后,支持对象was added to the Rails Inflector。
有关Rails 3.2及更高版本的信息,请参阅@Anson's answer。
这看起来像titleize
不适合的边缘情况。问题是capitalize
内部调用将始终将RV转换为Rv。
我会为内部调用self.class.titleize
的模型创建一个通用名称函数,然后在RVPark模型中重载它。