1

次のような i18n ファイルがあります。

ja:
  アクティブモデル:
    エラー:
      メッセージ:
        email_address: "%{email} は有効な電子メールではありません"

そして、私は電子メール用のカスタムバリデータを持っています:

class 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 が「%{email} は有効な電子メールではありません」にありません ( {:model="Signup", :attribute="Email", :value="sdsdfsdf"}が指定されています)

したがって、エラー メッセージで%{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 に答える