2009-04-29 127 views
5

我在我的一个模型中有一个叫做sui的字段。它代表“标准用户标识符”。当现场出现验证错误时,Rails会打印出“Sui is required”或“Sui已被使用”。如何告诉Rails如何正确地使首字母大写?

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

回答

7

在这种情况下,我使用custom_err_msg插件。安装后,它可以给自定义错误消息是这样的:

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

当你把^在开始时那么的Rails不要把字段名。

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

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

和错误消息。

+0

奇妙的提示!有没有办法将导致问题的价值放入消息中? “#{sui}被采纳”将不会工作,因为它会在错误的时间被评估。 – 2009-04-29 17:05:58

2

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

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

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

> "sui".titleize 
=> "SUI" 

请参阅链接的文档,了解更多酷的东西,您可以使用变形做些事情。