2009-04-29 126 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" 

請參閱鏈接的文檔,瞭解更多酷的東西,您可以使用變形做些事情。