2017-02-11 2 views
0

пт-BR.yml:Rails 5 - Устные ошибки от вложенной модели

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" 
    ]  
} 

Как я могу перевести Проекты и имя в моем файле перевода или даже удалить на «Проекты% atribute%» от сообщения об ошибках (без каких-либо взломов)?

ответ

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 
+0

Спасибо за ответ ... однако, я действительно не думаю, что мне нужно добавить все это ** снова ** под * errors * key ... потому что, как я уже сказал, * все сообщения об ошибках переводятся когда вызывается метод .error.full_messages, кроме тех, которые исходят от объектов проектов *. Итак, я пытаюсь найти способ их перевода или, возможно, удалить. Я ищу что-то вроде этого [** вопрос **] (http://stackoverflow.com/questions/5941856/suppress-base-in-error-text-for-custom-validation-of-rails-nested- атрибуты) (но это не работает для меня - может быть, потому, что это слишком старый). –

Смежные вопросы