Локализация атрибутов вложенных моделей для сообщений об ошибках в Rails 3.1 - PullRequest
3 голосов
/ 10 января 2012

У меня есть форма с глубоко вложенными моделями.

Когда атрибут вложенной модели содержит ошибку, отображаются сообщения об ошибках:

URL-адрес идентификатора элементов списка может быть не пустым.

Что означает:

Model_name + attribute + сообщение об ошибке файла локализации

Правильное сообщение должно быть:

URL ссылки на элемент может быть не пустым.

ruby-1.9.2-p290 :014 > ListItem.human_attribute_name("identifier")
=> "Item Link" 

В остальном локализация работает нормально, за исключением имен вложенных атрибутов модели в сообщениях об ошибках.

Похоже, это был ошибка в 2.3.4, которая была исправлена, но я не могу понять это.

Ответы [ 2 ]

1 голос
/ 09 апреля 2018

следующее работает для меня. У меня есть модель курса и модель OfflineCourse. OfflineCourse вложен в курс.

Следующий YAML работает правильно со мной. Надеюсь, это поможет

  course:
    title: Titolo
    subtitle: Sottotitolo
    description: Descrizione
    abstract: Abstract
    audience: A chi è rivolto?
    topic: Argomenti
    typology: Tipologia
    stars: Stelle
  course/offline_courses:
    start_date: Data inizio
    end_date: Data fine
    location: Luogo
    schedule: Programma
    visible: Visibile
    city: Città
1 голос
/ 12 марта 2012

Не уверен, что это «правильный» способ решить эту проблему, но это сработает.

В вашем файле локализации у вас, вероятно, есть что-то вроде этого:

en:
  activerecord:
    attributes:
      list_item:
        identifier: Item Link

Этобудет работать до тех пор, пока вы обращаетесь к ней непосредственно из вложенной модели.Проверки Rails, кажется, проходят через родительскую модель, поэтому вам нужно что-то вроде:

en:
  activerecord:
    attributes:
      list_item:
        identifier: Item Link
      parent_model:
        list_item:
          identifier: Item Link

Мне кажется, что это нарушает принцип DRY, потому что вы должны повторить удобочитаемое имя и на вложенном уровне, ноэто должно работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...