我有一些带有特殊验证的属性,在这些属性中,我使用message子句来显示一条专门用于验证的特殊消息.以下是一个例子:

validates :email, presence:   true, length: { maximum: 60 },
                format:     { with: valid_email_regex, message: "is not a valid email address format." },
                uniqueness: { case_sensitive: false } 

我想在这里翻译这个信息,但我不知道怎么做.

我见过这样的例子:message:t("这里的some_value_").我不确定名称.我试过这样的消息:t(:bad_email).我在yaml文件中做了以下操作只是为了try 一些东西.

activemodel:
  errors:
    bad_email: "is not a valid email address format."

当我试图访问Rails应用程序时,出现以下错误:

ActionView::Template::Error (undefined method `t' for #<Class:0x007fefc1b709e0>)

我在yaml文件中也try 过:

activemodel:
  errors:
    user:
      bad_email: "is not a valid email address format."

我一整天都在断断续续地研究这个问题.我所能找到的就是替换内置的错误哈希,比如blank或empty.有没有办法让我自定义错误哈希并在模型中替换它们?在这一点上,我无法让t按照编码的方式工作.我希望问题在于如何设置yaml文件.我看到了不同版本的设置方法.我不确定我应该把它放在activemodel还是activerecord下.我假设了activemodel,因为我要翻译的自定义消息就是在这里.

任何帮助都将不胜感激.这是我在启动应用程序的第一个翻译之前需要解决的最后一个问题.

UPDATE 7/29/2013 7:30 pm CDT

bgates给了我一个很好的开始,让我知道如何设置我的模型文件来接收YAML文件中的自定义消息.然而,为了找到自定义消息,我最终不得不在yaml文件中执行以下设置.

activerecord:
  errors: 
    models: 
      user: 
        attributes: 
          bio: 
            no_links: "cannot contain email addresses or website links (URLs)."
          email: 
            bad_email: "is not a valid email address format."
          username: 
            bad_username: "can only contain numbers and letters.  No special characters or spaces."

推荐答案

在信息中使用符号:

validates :email, presence:   true, length: { maximum: 60 },
            format:     { with: valid_email_regex, message: :bad_email },
            uniqueness: { case_sensitive: false } 

然后在yaml文件中

[lang]:
  activerecord:
    errors:
      messages:
        bad_email: "just ain't right"

如果有特定于此模型的转换,它将覆盖上面的一般转换:

[lang]:
  activerecord:
    errors:
      models:
        model_name: # or namespace/model_name
          attributes:
            email:
              bad_email: "model-specific message for invalid email"

如果编写自定义验证,add_error(:email, :bad_email)将执行上述查找,但errors[:email] << :bad_email不会.

Ruby-on-rails相关问答推荐

如何修复:错误:'' 没有提交判断致命:输入“git add”时添加文件失败.在命令提示符下

警告:不推荐使用常量 ::Fixnum 生成新模型时

活动模型序列化程序中的条件属性

LoadError:无法加载“听”gem(Rails 5)

Rails 5:无法从参数中检索哈希值

未捕获的 ReferenceError:未定义 React

Rails:验证两列的唯一性(一起)

Rails 与多个外键的关联

ActiveRecord::StatementInvalid: PG InFailedSqlTransaction

错误消息:在Bundle 之前确保 `gem install pg -v '0.18.1'` 成功

Rails API:实现身份验证的最佳方式?

Rails:如何在rails中使用dependent::destroy?

Rails 和 jsonb 类型“jsonb”不存在

在 Rails 4.1 中,如何通过枚举符号查找记录?

在rails 4中没有计数的复数

rails schema.rb 中的 :cascade 是什么,它是从哪里来的?

将 Rails 应用程序更改为生产环境

如何在 Rails 4 中加载供应商assets资源 文件夹?

由于 libreadline,rails 控制台无法加载

设置“EDITOR”或“BUNDLER_EDITOR”环境变量