自定义i18n错误消息会抛出InvalidPluralizationData错误?

dig*_*tie 5 validation ruby-on-rails internationalization ruby-on-rails-3

我有一个'用户'和'个人资料'模型.用户与个人资料和"accepts_nested_attributes_for个人资料"具有一对一的关系.

我正在使用两个复选框验证配置文件 - 也就是说,在验证之前必须接受其中一个协议.

无论如何,我想自定义错误消息不接受其中一个框,所以我将以下内容添加到en.yml中

activerecord:
  attributes:
    user: 
      profile:
        terms_and_conditions_a: 
          accepted: "You must accept the terms and conditions to continue"
        terms_and_conditions_b: 
          accepted: "You must accept the terms and conditions to continue"
Run Code Online (Sandbox Code Playgroud)

您将看到该配置文件嵌套在用户下 - 这是为了阻止"配置文件"放在错误消息的前面(如此处所述).

这给了我错误:

I18n::InvalidPluralizationData
translation data {:terms_and_conditions_a=>{:invalid=>"You must accept the terms and conditions to continue"}} can not be used with :count => 1
Run Code Online (Sandbox Code Playgroud)

我真的没有看到它试图复数,有什么帮助吗?

Max*_*ams 4

也许应该是

activerecord:
  errors:
    models:
      user: 
        profile:
          attributes:
            terms_and_conditions_a: 
              accepted: "You must accept the terms and conditions to continue"
Run Code Online (Sandbox Code Playgroud)

而不是

activerecord:
  attributes:
    user: 
      profile:
        terms_and_conditions_a: 
          accepted: "You must accept the terms and conditions to continue"
Run Code Online (Sandbox Code Playgroud)

这就是我的应用程序中的情况,无可否认,它是 Rails 2 而不是 Rails 3。

或者,尝试不在用户下嵌套配置文件:

activerecord:
  errors:
    models:
      profile:
        attributes:
          terms_and_conditions_a: 
            accepted: "You must accept the terms and conditions to continue"
Run Code Online (Sandbox Code Playgroud)