Rails 5 - 翻译嵌套模型中的错误

dev*_*054 3 ruby-on-rails

pt-BR.yml:

\n\n
pt-BR:\n  activerecord:\n    models:\n      user: Usu\xc3\xa1rio\n      project: Projeto\n    attributes:\n      user:\n        name: O nome\n        description: A descri\xc3\xa7\xc3\xa3o\n        projects: Os projetos\n      project:\n        name: O nome\n  errors:\n    format: "%{attribute} %{message}"\n    messages:\n      accepted: deve ser aceito\n      blank: n\xc3\xa3o pode ficar em branco\n      ........\n
Run Code Online (Sandbox Code Playgroud)\n\n

楷模:

\n\n
class User < ApplicationRecord\n  has_many :projects, dependent: :destroy, inverse_of: :user\n\n  accepts_nested_attributes_for :projects, allow_destroy: true\nend\n\nclass Project < ApplicationRecord\n  belongs_to :user, inverse_of: :projects\n\n  validates :name, presence: true, length: { mininum: 3, maximum: 255 }\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

控制器:

\n\n
def update\n  if @user.update(user_params)\n    render json: @user\n  else\n    render json: { errors: @user.errors.full_messages }, status: :unprocessable_entity\n  end\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

调用该方法时,所有错误消息都会被翻译.error.full_messages,除了来自项目对象的错误消息(正如您可能在上面注意到的,我正在使用accepts_nested_attributes_for)。

\n\n

我总是收到以下错误消息:

\n\n
{\n  "errors": [\n     "Projects name deve conter no m\xc3\xadnimo 3 caracteres"\n  ]      \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何翻译翻译文件中的项目和名称,甚至从错误消息中删除“项目%atribute%”(无需任何黑客攻击)?

\n

小智 5

对于 Rails 5.2,我必须检查核心代码以发现它在嵌套属性的翻译中使用命名空间,如下所示:

  pt-BR:
    activerecord:
      attributes:
        user/projects:
          name: O nome de um projeto
Run Code Online (Sandbox Code Playgroud)

因此,在“用户/项目”节点内部,您可以列出嵌套在用户中的项目的属性。