J'utilise des partiels dans Rails combinés avec des modèles de champ enfant jQuery pour générer dynamiquement des formulaires avec plusieurs attributs enfants imbriqués. Au sein de ces partiels est JavaScript qui est déclenché lorsque divers événements (par exemple onChange) se produisent dans le formulaire, et le code qui exécute doit modifier le DOM pour un élément de formulaire lié mais différent. Dans ce cas particulier, je l'utilise pour ajouter plusieurs transactions de vente dans une solution de type point de vente à un groupe particulier de transactions et contrôler quelles données sont collectées pour chaque transaction. Ainsi, par exemple:Générer automatiquement des ID d'élément HTML dans Rails lors de la répétition du même contrôle via des partiels
- L'utilisateur clique sur un lien qui ajoute 3 nouveaux enregistrements de transaction au groupe de transactions.
- L'utilisateur définit des valeurs différentes dans chacun de ces trois enregistrements de transaction, chacun desquels déclenche un événement onChange qui appelle une fonction JS qui doit manipuler le DOM pour chacun des événements de différentes manières. (Exemple: transaction 1 peut être un retour, donc il change le texte de la transaction du coût au remboursement, la transaction 2 peut être pour un service, donc il change le statut taxable, etc ...)
- La fonction JS a pour pouvoir changer le DOM pour la transaction correcte.
Mon problème est # 3 - les éléments DOM étant modifiés ne sont pas les mêmes que l'élément qui génère l'événement, donc je ne peux pas utiliser JS ce. Ils font partie d'un élément parent commun (c'est-à-dire qu'ils partagent un parent <div>), il est donc possible que j'utilise les sélecteurs parent/enfant jQuery pour naviguer vers l'élément correct dans le DOM. Cependant, même cela nécessite une certaine unicité dans les attributs de div id, et je ne suis pas sûr de la meilleure façon dans Rails de les générer dynamiquement. Je suppose que je pourrais utiliser des valeurs aléatoires, mais cela semble mauvais parce qu'il n'est pas vraiment garanti d'être unique et semble juste comme un hack. Je suppose que je pourrais essayer d'introduire une sorte de compteur, mais cela semble aller à l'encontre des principes du développement de Rails.
Toute indication est appréciée. Merci!
'uuid' de SecureRandom fonctionne bien aussi: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html –