Метки i18n для вложенных моделей с использованием simple_form

Если проект:

  • has_many: задачи
  • accepts_nested_attributes_for :задачи

и я использую simple_form вот так (упрощенно):

simple_form_for @project do |f|
  f.input :project_name
  f.simple_fields_for :tasks do |j|
    j.input :task_name
  end
  f.submit
end

Как мне интернационализировать метку для :task_name? Я пробовал довольно много комбинаций в моем файле simple_form.it.yml, например:

it:
  simple_form:
    labels:
      project:
        project_name: 'Nome progetto'
        task:
          task_name:  'Nome compito'

В документах примеров не нашел. Google указывает на пару явно важных закрытых проблем:

https://github.com/plataformatec/simple_form/issues/48

https://github.com/plataformatec/simple_form/issues/194

Но пока я в растерянности...

СПАСИБО! Джузеппе


person Giuseppe    schedule 06.10.2011    source источник


Ответы (4)


Поскольку ваша форма принимает много задач, вы должны использовать множественное число task. Он работает в простой_форме:

it:
  simple_form:
    labels:
      project:
        project_name: 'Nome progetto'
        tasks:
          task_name:  'Nome compito'
person Voldy    schedule 02.01.2012

Используйте Rails i18n по умолчанию.

it:
  activerecord:
    attributes:
      task:
        task_name:  'Nome compito'
person rafaelfranca    schedule 06.10.2011
comment
В моем случае это не работает, но мне нужно еще раз попробовать ваше предложение на тестовом, урезанном приложении. Также см. следующее: stackoverflow.com/questions/4479950/ - person Giuseppe; 07.10.2011
comment
Simple_form по умолчанию будет искать переводы меток для атрибутов активной записи. Использовать это лучше - таким образом, если вы используете те же метки на столе - все это определено в одном месте, используйте только предложение из принятого ответа, если вы действительно хотите настроить эту метку только в форме. (Я предполагаю, что это не работает для вас, если у вас есть что-то странное с множественным числом для задач, ИЛИ !! вы используете какой-то сервер или гем, который кэширует ваш dev - лучшее место для тестирования - в консоли. Я постоянно забываю, что rails-dev -boost кэширует моего разработчика и продолжает сталкиваться с той же проблемой.) - person konung; 27.10.2012

SimpleForm должен вернуться к it.simple_form.labels.task.task_name, но это не так.

Вы можете смоделировать это с помощью некоторого «хака» YAML.

it:
  simple_form:
    labels:
      task: &task_labels
        task_name:  'Nome compito'
      project:
        project_name: 'Nome progetto'
        tasks:
          <<: *task_labels

Вы даже можете настроить метки задач проекта после строки <<: *task_labels.

person Reinaldo Junior    schedule 13.04.2012

Я блуждаю, если это полезно:

activerecord.errors.models.[model_name].attributes.[attribute_name]
activerecord.errors.models.[model_name]
activerecord.errors.messages
errors.attributes.[attribute_name]
errors.messages
person Serge Vinogradoff    schedule 31.07.2014