IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

[sortable_elements] L'appel AJAX n'est pas toujours fait


Sujet :

Ruby on Rails

  1. #1
    Membre confirmé Avatar de Miles Raymond
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 189
    Par défaut [sortable_elements] L'appel AJAX n'est pas toujours fait
    Bonjour !

    J'ai galéré pendant facilement une journée pour mettre en place un système de gestion d'équipe avec le sortable elements de prototype.

    Ma liste se présente de cette manière : on a une div par employé affichant son nom, prénom et l'équipe à laquelle il appartient. Les div en vert sont pour les chef d'équipe et, au dessous de cette div, en blanc, se trouve tous les membres de l'équipe. Donc c'est affiché de manière "hiérarchique", voici un aperçu :



    Mais même si mon affichage est hiérarchiques, je n'utilise aucunement des <ul><li>, mais bien des divs tous du long, l'appel sortable_elements est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%= sortable_element("employes_equipe", :tag => :div, :only => "equipes_employe", :complete => visual_effect(:highlight, 'employes_equipe'),
    :url=> { :action => :sort }, :method => :get, :handle => "employe_drag_hover",
    :with=>"'id=' + $(Draggables.activeDraggable.element.id).down(2).down(0).id + '&equipe=' + $(Draggables.activeDraggable.element.id).previous('.equipes_equipe').id")  %>
    Donc je surveille mon div "employes_equipes", je rends draggable les tags "div", uniquement ceux disposant de la classe "equpes_employe" (je ne veux pas qu'on puisse dragger les chef d'équipes), un petit effet highlight à la fin et mon appel Ajax est un get vers mon action sort.
    Maintenant, pour clarifier un peu le with, je récupère en fait l'id d'une image contenu dans le div draggé (qui me donne l'id de l'employé) et le nom de l'équipe (qui est fait l'id des divs vert, ceux des chef d'équipe).

    Et, après avoir puissamment transpiré, ça marche ! Mais j'ai un problème lorsque en arrivant dans ma page, les premiers voir deuxième employé que je drag je les met dans "Aucune équipe", ça ne s'exécute pas toujours !! C'est complétement aléatoire et je ne sais même pas si c'est uniquement lié au div "Aucune équipe" (qui renvoit juste une id vide pour l'équipe et qui fonctionne très bien).

    Je ne vais pas vous montrer mon controller et tout ça, parce que de ce côté là, ça marche très bien, mais mon problème vient de l'appel AJAX. Précision : j'ai bel et bien nommé mes items selon la convention "item_id" afin que le Serialize de la méthode sortable_elements ne pose aucun problème. (voir ici : http://www.ruby-forum.com/topic/66894)

    Donc avez-vous une idée ? Au pire je pourrais repasser tout ça en <ul><li> mais est-ce possible d'avoir ce même affichage avec ces balises ? D'autant que les li comme les ul devront contenir 3 span en "block" d'une trentaine de % chacun...

    Merci d'avance...

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    id vide
    Méfie toi que des fois tu vas avoir des id vides et des fois des id null, et que le comportement n'est pas forcément le meme...
    Autrement, tu peux peut etre considérer que "pas d'équipe" c'est aussi une équipe, qui s'appellerait "pas d'équipe".

  3. #3
    Membre confirmé Avatar de Miles Raymond
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 189
    Par défaut
    Citation Envoyé par Zfred Voir le message
    Méfie toi que des fois tu vas avoir des id vides et des fois des id null, et que le comportement n'est pas forcément le meme...
    Autrement, tu peux peut etre considérer que "pas d'équipe" c'est aussi une équipe, qui s'appellerait "pas d'équipe".
    Merci de ta réponse! Malheureusement après avoir changer l'id en l'ayant appelé "null" et en ayant fait les démarches dans mon controller ça ne fonctionne toujours pas. On dirait que la fonction sortable_element ne s'active pas si, à la première opération, on met un div dans une équipe "vide". Càd que, après tests, ce n'est pas uniquement dans l'équipe "Pas d'équipe" que le problème se pose, mais dès que notre première action dans la fenêtre est de mettre un employé dans une équipe n'ayant aucun membre jusque là...

    Vraiment étrange. Si jamais, afin de pouvoir "dragger" dans une équipe vide, j'ai été obligé d'ajouter une div de 1px en dessous de chaque chef d'équipe. La propriété DragOnEmpty de la fonction sortable_element ne marchait pas dans mon cas.

Discussions similaires

  1. Réponses: 13
    Dernier message: 20/04/2009, 00h58
  2. LSMW n'est pas toujour util
    Par eddassiabdelhak dans le forum SAP
    Réponses: 1
    Dernier message: 10/02/2009, 12h15
  3. [Framework] [AOP] L'advice n'est pas toujours appelé
    Par elitost dans le forum Spring
    Réponses: 2
    Dernier message: 23/01/2009, 00h11
  4. [AJAX] Le retour d'AJAX n'est pas "actif"
    Par DrDam dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 08/12/2008, 15h29
  5. ramener un champ qui n'est pas toujours rempli
    Par digger dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/11/2006, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo