如何在ruby-on-rails中覆盖通用的activerecord错误消息?

时间:2010-03-22 15:02:53

标签: ruby-on-rails activerecord internationalization override

在我的en.yml翻译文件中,我有:

activerecord:
  errors: 
    template: 
       header: 
         one: "1 error prohibited this {{model}} from being saved"
         other: "{{count}} errors prohibited this {{model}} from being saved"  

在登录我的应用程序时发生activerecord / validation错误时,错误消息:

  

“1错误禁止保存此用户会话”

显示

(其中user_session是正在使用的模型)。我宁愿让它说像

  

“发生了一次错误,导致您无法登录自己的帐户”。

如何使用我的特定错误消息覆盖常规错误消息?

2 个答案:

答案 0 :(得分:12)

我发现路由Rails(2.3.8)跟随转换错误消息(使用i18n 0.6.0): 另外,不要忘记更改full_messages格式,使其与您的自定义消息一致。

以下是模型“Horse”的示例,它验证属性“name”(不能为空)。

在您的模型中(app / models / horse.rb):

validates_presence_of :name

在您的翻译文件(config / locales / en.yml)中:

en:
  activerecord:
    errors:
      models:
        horse:
          attributes:
            name:
              blank: "Hey, are you the horse with no name?"
      full_messages:
        format: "%{message}"

下面是RoR-guides页面的链接,我发现了这一点。还列出了每种验证变体都需要哪些消息。

符号和默认值可能会随着Rails和/或i18n的更高版本而改变。

答案 1 :(得分:0)

您需要制作自己的FormBuilder并更改其翻译密钥。