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
时正在翻译所有错误消息,除了那些来自 projects 对象的消息(正如您上面提到的那样,我正在使用{{1 }})。
我总是收到以下错误消息:
accepts_nested_attributes_for
如何在翻译文件中翻译项目和名称,甚至从错误消息中删除“投影%atribute%”(没有任何黑客)?
答案 0 :(得分:1)
对于Rails 5.2,我不得不检查核心代码以发现它在嵌套属性的翻译中使用了名称空间,例如:
pt-BR:
activerecord:
attributes:
user/projects:
name: O nome de um projeto
因此,在“用户/项目”节点内,您可以在其中列出嵌套在用户中的项目的属性。
答案 1 :(得分:0)
如果您看到文档:http://guides.rubyonrails.org/i18n.html#error-message-scopes
请注意,错误名称空间与常规模型文本不同,您应该尝试在错误名称空间下添加模型和属性以匹配
activerecord.errors.models.[model_name].attributes.[attribute_name]
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}"
models:
user: Usuário
project: Projeto
attributes:
user:
name: O nome
description: A descrição
projects: Os projetos
project:
name: O nome
messages:
accepted: deve ser aceito
blank: não pode ficar em branco