【发布时间】:2013-07-29 22:12:33
【问题描述】:
我有带有特殊验证的属性,我使用消息子句来显示仅用于该验证的特殊消息。这是一个例子:
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_here").我不确定这个名称。我试过这样的消息:t(:bad_email)。我在我的 yaml 文件中执行以下操作只是为了尝试。
activemodel:
errors:
bad_email: "is not a valid email address format."
当我尝试访问我的 Rails 应用程序时,出现以下错误:
ActionView::Template::Error (undefined method `t' for #<Class:0x007fefc1b709e0>)
我也在我的 yaml 文件中尝试过这个:
activemodel:
errors:
user:
bad_email: "is not a valid email address format."
我整天都在研究这个问题。我能找到的只是替换内置的错误哈希,如空白或空。有没有办法让我拥有自定义错误哈希并在模型中替换它们?在这一点上,我无法让 t 按编码工作。我希望问题在于我如何设置我的 yaml 文件。我已经看到了如何设置它的不同版本。我不确定是否应该将它放在 activemodel 或 activerecord 下。我假设是 activemodel,因为那是我要翻译的自定义消息。
任何帮助将不胜感激。这是我在启动我的第一个应用程序翻译之前需要弄清楚的最后一部分。
更新 2013 年 7 月 29 日下午 7:30 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."
【问题讨论】:
标签: ruby-on-rails error-handling localization internationalization message