Автоматически генерировать идентификаторы HTML-элементов в Rails при повторении одного и того же элемента управления через партиалы - PullRequest
0 голосов
/ 07 июля 2010

Я использую партиалы в Rails в сочетании с шаблонами дочерних полей jQuery для динамического создания форм с несколькими вложенными дочерними атрибутами.В этих частичках есть JavaScript, который запускается, когда в форме происходят различные события (например, onChange), и выполняемый код должен изменить DOM для связанного, но другого элемента формы.В этом конкретном случае я использую его для добавления нескольких транзакций продажи в решении типа торговой точки к определенной группе транзакций и управления тем, какие данные собираются для каждой транзакции.Так, например:

  1. Пользователь нажимает на ссылку, которая добавляет 3 новые записи транзакции в группу транзакций.
  2. Пользователь устанавливает разные значения в каждой из этих трех записей транзакции, каждая изкоторый запускает событие onChange, которое вызывает функцию JS, которая должна по-разному манипулировать DOM для каждого из событий.(Пример: транзакция 1 может быть возвратом, поэтому она изменяет текст транзакции с стоимости на возврат, транзакция 2 может относиться к услуге, поэтому она меняет налогооблагаемый статус и т. Д.)
  3. JS-функция должна иметь возможность изменять DOM для правильной транзакции.

Моя проблема # 3 - изменяемые элементы DOM не совпадают с элементом, генерирующим событие, поэтому я могу 'т JS это .Они являются частью общего родительского элемента (то есть имеют общий родительский элемент ), поэтому я могу использовать селекторы родительского / дочернего jQuery для перехода к нужному элементу в DOM.Однако даже для этого требуется некоторая уникальность атрибутов div id, и я не уверен, что в Rails лучший способ их динамической генерации.

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

Любое руководство приветствуется.Спасибо!

Ответы [ 2 ]

1 голос
/ 09 июля 2010

Использование текущего времени - рецепт боли и необъяснимых ошибок. Я настоятельно рекомендую вам использовать что-то вроде GUID генератора для генерации уникальных идентификаторов.

0 голосов
/ 07 июля 2010

вы можете использовать Time.now как уникальный идентификатор при создании нового тега

Time.now.to_i

это не хак или что-то, что противоречит принципам Rails; -)

...