如何在 Ruby on Rails 中本地化深度嵌套属性的验证错误消息?

How to localize validation error messages for deeply nested attributes in Ruby on Rails?

提问人:Tintin81 提问时间:8/9/2023 更新时间:8/30/2023 访问量:59

问:

在我的 Ruby on Rails 7 应用程序中,我有一个有很多,而它又可以有很多(基本上只包含一个附件)。BookingCargoItemsCargoItemDocumentsupload

class Booking < ApplicationRecord

  has_many :cargo_items

  accepts_nested_attributes_for :cargo_items

end

class CargoItem < ApplicationRecord

  belongs_to :booking

  has_many :cargo_item_documents

  accepts_nested_attributes_for :cargo_item_documents

end

class CargoItemDocument < ApplicationRecord

  belongs_to :cargo_item

  has_one_attached :upload

end

遗憾的是,深度嵌套的本地化验证消息未正确呈现。这是我的德语本地化文件:CargoItemDocuments

de:
  activerecord: 
    attributes: 
      booking:
        number: "Nummer"
        date: "Datum"
      cargo_item: 
        title: "Titel"
        weight: "Gewicht"
        cargo_item_documents:
          upload: "Datei" # <-- Not working!  

因此,当上传无效的文件类型时,我当前收到的不是德语验证错误消息:

货物物品 货物项目文件上传 hat einen ungültigen Dateityp

如何解决这个问题?

Ruby-on-Rails Ruby 验证 ActiveRecord

评论

0赞 Dennis Hackethal 8/9/2023
只是为了踢球,你有没有试过移动到顶级/以下?如果您正在工作,即使预订货物项目,也应该适用于。cargo_item_documentsattributescargo_itemaccepts_nested_attributes_forcargo_item_documents
0赞 Tintin81 8/9/2023
@DennisHackethal,我只是尝试了一下(单数和复数形式),但无济于事。
0赞 mechnicov 8/9/2023
您要使用什么错误密钥?您的 YAML 中没有人
0赞 David 8/9/2023
您是否尝试过在 ?(不确定应该是复数还是单数)在这里,他们以这种形式使用():guides.rubyonrails.org/...cargo_item/cargo_item_documentsuser/role
0赞 Tintin81 8/9/2023
@David:是的,这是我在阅读了 Rails 文档后最开始尝试的。但它对我不起作用,无论是单数还是复数形式(尝试了所有可能的组合)。

答:

0赞 Tintin81 8/30/2023 #1

好的,三周后,这就是解决方案:

de:
  activerecord: 
    attributes: 
      booking:
        number: "Nummer"
        date: "Datum"
      cargo_item: 
        title: "Titel"
        weight: "Gewicht"
      cargo_items/cargo_item_documents:
        upload: "Datei"