1

我有一个 i18n 文件:

zh:
  活动模型:
    错误:
      留言:
        email_address: "%{email} 不是有效的电子邮件"

我有一个电子邮件的自定义验证器:

类 EmailFormatValidator < ActiveModel::EachValidator
  def validate_each 记录、属性、值
    record.errors.add 属性,(options[:message] || :email_address) 除非
    值 =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[az]{2,})\z/
  结尾
结尾

如何将%{email}上述验证器的值传递给 i18n yml 文件?我不断收到此错误:

missing interpolation argument :email in "%{email} is not a valid email" ({:model=>"Signup", :attribute=>"Email", :value=>"sdsdfsdf"} given)
4

1 回答 1

2

在错误消息中,翻译model名称、翻译attribute名称和value始终可用于插值。

您还可以在异常消息中看到:

缺少插值参数 :email in "%{email} is not a valid email" ( {:model=>"Signup", :attribute=>"Email", :value=>"sdsdfsdf"} given)

所以你需要使用来获取错误信息中%{value}的实际值:"sdsdfsdf"

email_address: "%{value} is not a valid email"

这将显示:Email sdsdfsdf is not a valid email。但是,如果您想更改所有错误消息的格式,您可以errors.format在本地化中的键下进行:

en:
  errors:
    # The default format to use in full error messages. "%{attribute} %{message}"
    format: "%{message}"
于 2013-07-28T11:41:01.760 回答