如何在Ruby on Rails中本地化深度嵌套属性的验证错误信息?
解决Rails深度嵌套模型附件验证本地化问题
问题根源
你的本地化文件结构错误,CargoItemDocument模型的upload属性应该直接定义在该模型的属性节点下,而非嵌套在cargo_item的属性里。Rails解析嵌套模型的属性本地化时,会直接查找对应模型的属性定义,不会通过父模型的关联节点去读取。
修正后的德语本地化文件
de: activerecord: # 可选:模型名称本地化(修正错误提示里的模型名显示) models: booking: "Buchung" cargo_item: "Ladungsposition" cargo_item_document: "Ladungspositionsdokument" attributes: booking: number: "Nummer" date: "Datum" cargo_item: title: "Titel" weight: "Gewicht" # 可选:关联名称本地化(修正错误提示里的关联名显示) cargo_item_documents: "Ladungspositionsdokumente" # 将upload属性移到对应模型的节点下 cargo_item_document: upload: "Datei"
额外优化(可选)
如果希望错误提示中的关联和模型名称也显示德语(比如把"Cargo items"改成"Ladungspositionen"),可以补充上述models和关联属性的本地化定义。修正后错误提示会变为:
Ladungspositionen Ladungspositionsdokumente Datei hat einen ungültigen Dateityp
验证修改
- 重启Rails服务器,确保本地化文件生效
- 上传无效文件类型,检查错误提示是否已正确显示德语
内容的提问来源于stack exchange,提问作者Tintin81
相关产品推荐
相关产品推荐

