我在我的一個模型中有一個叫做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