【问题标题】:Ruby on Rails I18n interpolationRuby on Rails I18n 插值
【发布时间】:2012-09-03 12:36:13
【问题描述】:

大家!

我的 :username 字段有一个小的验证,它应该是 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",这显然不起作用(只是为了检查)。

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

谢谢大家的建议!

【问题讨论】:

    标签: ruby-on-rails ruby validation internationalization range


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 耶!我明白了: :length => { :within => a = (4..30), :message => I18n.t('activerecord.errors.range', :min => a.min, :max => a.max) } 谢谢你的想法! :) 希望这对某人有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多