Я использую частичные части Rails в сочетании с шаблонами дочерних полей jQuery для динамического создания форм с несколькими вложенными дочерними атрибутами. Внутри этих партиций находится JavaScript, который запускается, когда различные события (например, onChange) встречаются в форме, а исполняемый код должен изменить DOM для связанного, но другого элемента формы. В этом конкретном случае я использую его для добавления нескольких транзакций продажи в решении типа точки продажи для определенной группы транзакций и контроля за тем, какие данные собираются для каждой транзакции. Так, например:Автогенерировать идентификаторы HTML-элементов в Rails при повторении одного и того же элемента управления с помощью парциальных чисел
- Пользователь нажимает на ссылку, которая добавляет 3 новые записи транзакций в группу транзакций.
- Пользователь устанавливает разные значения в каждой из этих трех записей транзакций, каждый из которых запускает событие onChange, которое вызывает функцию JS, которая должна манипулировать DOM для каждого из событий различными способами. (Пример: транзакция 1 может быть возвратом, поэтому она изменяет текст транзакции от стоимости до возврата, транзакция 2 может быть для службы, поэтому она изменяет статус налогообложения и т. Д.)
- Функция JS имеет чтобы иметь возможность изменить DOM для правильной транзакции.
Моя проблема # 3 - в DOM элементы модифицируются не такой же, как элемент, генерирующий событие, поэтому я не могу использовать JS это. Они являются частью общего родительского элемента (т. Е. Имеют общий родительский <div>), поэтому для использования родительских/дочерних селекторов jQuery может быть возможным перейти к правильному элементу в DOM. Однако даже это требует некоторой уникальности в атрибутах div id, и я не уверен, что в Rails лучше всего их динамически генерировать.
Предполагаю, что я мог бы использовать случайные значения, но это кажется плохим, потому что на самом деле не гарантировано быть уникальным и просто кажется взломом. Полагаю, я мог бы попытаться ввести какой-то счетчик, но это, похоже, нарушает принципы разработки Rails.
Любые рекомендации приветствуются. Благодаря!
«uuid» SecureRandom тоже работает: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html –