如何告诉Rails如何正确地缩写首字母缩略词?

时间:2009-04-29 16:45:05

标签: ruby-on-rails ruby

我的一个模特中有一个名为sui的字段。它代表“标准用户标识符”。当字段上存在验证错误时,Rails会打印出“Sui is required”或“Sui已被占用”。

如何告诉Rails 'sui'.titleize是“SUI”?我看了Inflector.human,但这不太对。

2 个答案:

答案 0 :(得分:7)

在这种情况下,我使用custom_err_msg插件。安装时,您可以提供如下自定义错误消息:

validates_presence_of :sui, :message => '^SUI is required'

当你把^放在开头时,Rails不会输入字段名称。

编辑: 还有另一个插件i18n_label用于翻译,但有了它,你可以用非常简单的方式用更好的东西替换你的字段名称(在插件页面上有一个例子)。它将替换名称:

<%= f.label :sui %>
YourModel.human_attribute_name "sui"

并在错误消息中。

答案 1 :(得分:3)

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

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

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

> "sui".titleize
=> "SUI"

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