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

Jae*_*Cho 9 string ruby-on-rails

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

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

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

Ans*_*son 16

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

# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
  inflect.acronym 'RV'
end
Run Code Online (Sandbox Code Playgroud)

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

> "RvPark".titleize
=> "RV Park"
> "rv".titleize
=> "RV"
Run Code Online (Sandbox Code Playgroud)

请参阅链接的文档,了解更多有关变形的精彩内容.


Ada*_*sek 4

更新:在我发布此内容后,Rails Inflector 中添加了缩写词支持。

请参阅@Anson对 Rails 3.2 及更高版本的回答。


titleize这看起来像是一个不适合的边缘情况。问题是capitalize里面的调用总是会把RV变成Rv。

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