[英]Rails 5 - Translating errors from nested model
pt-BR.yml :
pt-BR:
activerecord:
models:
user: Usuário
project: Projeto
attributes:
user:
name: O nome
description: A descrição
projects: Os projetos
project:
name: O nome
errors:
format: "%{attribute} %{message}"
messages:
accepted: deve ser aceito
blank: não pode ficar em branco
........
楷模:
class User < ApplicationRecord
has_many :projects, dependent: :destroy, inverse_of: :user
accepts_nested_attributes_for :projects, allow_destroy: true
end
class Project < ApplicationRecord
belongs_to :user, inverse_of: :projects
validates :name, presence: true, length: { mininum: 3, maximum: 255 }
end
控制器:
def update
if @user.update(user_params)
render json: @user
else
render json: { errors: @user.errors.full_messages }, status: :unprocessable_entity
end
end
调用方法.error.full_messages
时,正在翻译所有错误消息,除了那些来自项目对象的消息(正如您上面可能已经注意到的,我正在使用accepts_nested_attributes_for
)。
我总是收到以下错误消息:
{
"errors": [
"Projects name deve conter no mínimo 3 caracteres"
]
}
如何在翻译文件中翻译项目和名称 ,甚至从错误消息中删除 “Projects%atribute%”(没有任何黑客攻击)?
对于Rails 5.2,我必须检查核心代码,以发现它在嵌套属性的翻译中使用名称空间,如下所示:
pt-BR:
activerecord:
attributes:
user/projects:
name: O nome de um projeto
因此,在'user / projects'节点中,您可以列出嵌套在User中的Project的属性。
如果您看到文档: http : //guides.rubyonrails.org/i18n.html#error-message-scopes
请注意,错误名称空间与常规模型文本不同,您应该尝试在错误名称空间下添加模型和属性,以匹配activerecord.errors.models.[model_name].attributes.[attribute_name]
pt-BR:
models_and_attributes: &models_and_attributes
models:
user: Usuário
project: Projeto
attributes:
user:
name: O nome
description: A descrição
projects: Os projetos
project:
name: O nome
errors:
format: "%{attribute} %{message}"
<<: *models_and_attributes
activerecord:
<<: *models_and_attributes
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.