2012-09-03 102 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