[RUBY] Cliquez sur autre que f.link_to_add dans nested_form pour ajouter un élément prérempli

Dans l'utilisation normale, l'élément est ajouté avec la balise a affichée par la méthode de formulaire link_to_add. Le modèle que j'ai implémenté cette fois est d'ajouter un élément de nested_form aux coordonnées où le canevas est cliqué, et de pré-remplir les coordonnées de cet élément.

Au cours de mes recherches, la méthode link_to_add s'exécute sur des événements qui dépendent de la structure DOM, y compris le plan, donc je ne pouvais pas l'implémenter proprement en utilisant la méthode javascript que link_to_add utilise en interne.

Par conséquent, la politique d'implémentation de base consiste à écrire les coordonnées dans le magasin global avec le gestionnaire d'événements click de canvas, et à lire les coordonnées du magasin global avec l'événement nested: fieldAdded, qui est une implémentation de relais externe.

function handleClick(e) {
[...]
  var linkToAdd = $('[data-blueprint-id="connectors_fields_blueprint"]')
  linkToAdd.data('tmp-x', Math.floor(mouseX));
  linkToAdd.data('tmp-y', Math.floor(mouseY));
  linkToAdd.click();
}     
  $(document).on('nested:fieldAdded:connectors', function(event){
    var linkToAdd = $('[data-blueprint-id="connectors_fields_blueprint"]')
    event.field.find('input[data-x]').val(linkToAdd.data('tmp-x')) && linkToAdd.data('tmp-x', null);
    event.field.find('input[data-y]').val(linkToAdd.data('tmp-y')) && linkToAdd.data('tmp-y', null);
[...]

S'il vous plaît laissez-moi savoir si vous connaissez une meilleure façon.

fin

Recommended Posts

Cliquez sur autre que f.link_to_add dans nested_form pour ajouter un élément prérempli
Comment ajouter un chemin de classe dans Spring Boot
Je veux cliquer sur une broche GoogleMap dans RSpec
Ajoutez une fonction de recherche dans Rails.