Ruby on rails RubyonRails I18n插值

Ruby on rails RubyonRails I18n插值,ruby-on-rails,ruby,validation,internationalization,range,Ruby On Rails,Ruby,Validation,Internationalization,Range,各位! 我对my:username字段有一个小的验证,它应该是4到30个字符。我写了一个验证::length=>{:within=>4..30,:message=>I18n.t('activerecord.errors.range')-我想为所有类型的错误显示一条错误消息(不是太长或太短),但这里有一个问题-我是否可以将最小值和最大值都传递给翻译,使其类似于:用户名应该在4到30个字符之间。目前我有:范围:“应该在%{count}和%{count}个字符之间”,这显然不起作用(仅用于检查) 是否

各位!

我对my:username字段有一个小的验证,它应该是4到30个字符。我写了一个验证:
:length=>{:within=>4..30,:message=>I18n.t('activerecord.errors.range')
-我想为所有类型的错误显示一条错误消息(不是太长或太短),但这里有一个问题-我是否可以将最小值和最大值都传递给翻译,使其类似于:用户名应该在4到30个字符之间。目前我有:
范围:“应该在%{count}和%{count}个字符之间”
,这显然不起作用(仅用于检查)

是否可以从范围中获取这些值


谢谢大家的建议!

您可以将自定义变量传递给I18n translate方法(或其缩写-t):

然后您可以在字符串模板中使用它们%{min}和%{max}


它不会自动从范围中获取它,但这是我所能想到的最接近的。

Yay!我得到了它::length=>{:within=>a=(4..30),:message=>I18n.t('activerecord.errors.range',:min=>a.min,:max=>a.max)}谢谢你的想法!:)希望这对某人有帮助!
I18n.t('activerecord.errors.range', :min => 4, :max => 30)