Rails翻译嵌套属性i18n的验证错误消息

san*_*nta 6 validation localization ruby-on-rails nested-attributes

错误消息不会转换我的嵌套模型属性,因为它被定义为单数,但在错误消息中它查找复数.

我有一个模型'人',其中has_many:地址.此Person模型接受"地址"的嵌套属性.我只创建地址和Person模型.

我的语言环境文件看起来像

en:
  activerecord:
    models:
      person:
        one: "Person"
        other: "People"
      address:
        one: 'Address'
        other: 'Addresses'
    attributes:
      person:
        first_name: 'First name'
        last_name: 'Last name'
        middle_name: 'Middel name'
      address:
        street: street
        city: city
        country: country
Run Code Online (Sandbox Code Playgroud)

并为错误消息:

en:
  errors: &errors
    format: ! '%{attribute} %{message}'
    messages:
      blank: can't be blank
Run Code Online (Sandbox Code Playgroud)

它适用于单个模型但具有嵌套属性我遇到了验证消息的问题.

由于消息显示如下:

 @messages=
  {:first_name=>["can't be blank"],
   :last_name=>["can't be blank"],
   :"addresses.street"=>["can't be blank"],
   :"addresses.city"=>["can't be blank"]}>
Run Code Online (Sandbox Code Playgroud)

查找找不到addresses.street的转换,因为它只是yml文件中的address.street.

我怎样才能找到address.street,当它查找address.street而不加倍我的所有条目?

bob*_*sol -1

你在 Rails Doc 中查找过如何处理复数吗

[rails i18n][1] [1]: http: //guides.rubyonrails.org/i18n.html#pluralization

3 复数 在英语中,给定的字符串只有一种单数和一种复数形式,例如“1 message”和“2 messages”。其他语言(阿拉伯语、日语、俄语等)具有不同的语法,具有更多或更少的复数形式。因此,I18n API 提供了灵活的复数功能。