我有一些带有特殊验证的属性,在这些属性中,我使用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相关问答推荐

Ruby线程使用互斥处理并发问题

Rails7--如何使用内联代码仅为操作运行BEFORE操作

如何在嵌套路由中使用Ruby on rails多态关联

Sidekiq with Rails - 控制台与 rake 任务中的不同 Sidekiq 实例

Rails 7:加载所有刺激控制器

Rails 连接并包含连接表中的列

如何避免 activesupport 中的循环参数引用警告

Rails 自动加载完全大写的名称,如 API

有没有办法在模型而不是视图中使用复数()?

如何避免 RSpec 3.0 中 stub_chain 的弃用警告?

什么是 Ruby 中的 Python 文档字符串?

Rails 助手应该假设实例变量存在还是应该将它们作为参数接收?

如何在Ruby 中对数字进行上限和舍入

如何使用 Ruby 在现有 PDF 上编辑或书写?

如何禁用 HTTP 严格传输安全性?

批量查找 mongoDB 记录(使用 mongoid ruby​​ 适配器)

将图标添加到 Rails 应用程序

参数错误:范围主体需要可调用

Date.current 和 Date.today 有什么区别?

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