2012-09-03 139 views
5

大家好!Ruby on Rails I18n插值

我對我的用戶名字段有一個小的驗證,它應該是4到30個字符。我寫了一個驗證::length => { :within => 4..30, :message => I18n.t('activerecord.errors.range') - 我想爲所有類型的錯誤(不像too_long或too_short)顯示單個錯誤消息,但是這裏有個問題 - 我可以將最小值和最大值傳遞給翻譯, :用戶名應該在4到30個字符之間。目前我有:range: "should be between %{count} and %{count} characters",這顯然不起作用(只是爲了檢查)。

是否可以從範圍中獲取這些值?

謝謝大家的建議!

回答

9

你可以通過自定義變量i18n的翻譯方法(或它的簡寫 - T):

I18n.t('activerecord.errors.range', :min => 4, :max => 30) 

然後你就可以使用它們的字符串模板內側%{min}到%{MAX}。

它不會自動從範圍中取出,但這與我所能想到的最接近。

+0

耶!我知道了::length => {:within => a =(4..30),:message => I18n.t('activerecord.errors.range', :min => a.min,:max = > a.max)}謝謝你的想法! :)希望這將有助於某人! – Dmitri