我在我的一个模型中有一个叫做sui
的字段。它代表“标准用户标识符”。当现场出现验证错误时,Rails会打印出“Sui is required”或“Sui已被使用”。如何告诉Rails如何正确地使首字母大写?
我该如何告诉Rails 'sui'.titleize
是“SUI”?我看着Inflector.human
,但那不太对。
我在我的一个模型中有一个叫做sui
的字段。它代表“标准用户标识符”。当现场出现验证错误时,Rails会打印出“Sui is required”或“Sui已被使用”。如何告诉Rails如何正确地使首字母大写?
我该如何告诉Rails 'sui'.titleize
是“SUI”?我看着Inflector.human
,但那不太对。
在这种情况下,我使用custom_err_msg插件。安装后,它可以给自定义错误消息是这样的:
validates_presence_of :sui, :message => '^SUI is required'
当你把^在开始时那么的Rails不要把字段名。
编辑: 有用于翻译另一个插件i18n_label,但有了它你可以非常简单的方式更换更好的东西(插件页面上有一个例子),你的领域的名称。它将替代以下名称:
<%= f.label :sui %>
YourModel.human_attribute_name "sui"
和错误消息。
您可以通过配置ActiveSupport::Inflector来完成此操作,该操作提供了titleize方法。只需在初始化程序中定义自己的inflections即可。
# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.acronym 'SUI'
end
重新启动您的应用以获取更改。现在titleize
知道如何处理“SUI”。启动Rails控制台检查:
> "sui".titleize
=> "SUI"
请参阅链接的文档,了解更多酷的东西,您可以使用变形做些事情。
奇妙的提示!有没有办法将导致问题的价值放入消息中? “#{sui}被采纳”将不会工作,因为它会在错误的时间被评估。 – 2009-04-29 17:05:58