2017-02-17 4 views
8

Учитывая модель Album has_many Song и последнее с локализованными такими областями, как:Индексирования вложенной формы с множественным `fields_for`

Song#name_en 
Song#description_en 
Song#name_fr 
Song#description_fr 
[...] 

Благодаря конструкции внешнего интерфейса, я не могу сделать один f.simple_fields_for :songs в одном месте для всех атрибутов песни, но нужно разбить его:

= f.simple_fields_for :songs do 
    = render partial: 'song_en_fields', locals: { f: f, locale: :en } 
[...] 
= f.simple_fields_for :songs do 
    = render partial: 'song_fields', locals: { f: f, locale: :fr } 
[...] 

Полученные поля индексируются с [0], [1] и т.д., как они должны, однако, индекс не перезагружается с 0 на каждом INDV idivual simple_fields_for, но просто продолжает подсчитывать.

Я проверил источник и нашел опцию index в Rails 'fields_for, но это просто добавляет дополнительный индексный массив.

Есть ли способ «сбросить» автоинкремент индекса, когда simple_fields_for (или fields_for) вызывается несколько раз для одной коллекции?

ответ

6

Вместо того чтобы пытаться сбросить автоинкремент, вы можете установить индекс самостоятельно, поставив fields_for в петлю и пропустив child_index: your_index.

+0

Да, я просто пришел сюда, чтобы опубликовать одно и то же решение. 'child_index', кажется, полностью недокументирован, по крайней мере, это нигде не упоминается здесь (http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-fields_for). – Thilo

-1

У меня есть предложение попытаться использовать globalize для вашего проекта, управляйте своими локализованными данными модели Song. Пожалуйста, просмотрите этот screencast.

Надеюсь, это поможет.

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