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 :

[RJS] mise à jour ajax sur un groupe de checkbox


Sujet :

Ruby on Rails

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut [RJS] mise à jour ajax sur un groupe de checkbox
    Hello

    Un petit soucis avec une liste de checkbox permettant de gérer une relation N-N dans la BDD...

    La liste étant assez longue, j'ai un champ texte avec un observe_field pour filtrer la liste dynamiquement en ajax avec un "render partial" dans mon controller

    le soucis est que le rechargement de la liste ne conserve pas les cases préalablement cocher...

    Une solution serait de mettre à jour dynamiquement la BDD à chaque fois que l'on coche/décoche une case, mais je ne vois pas trop comment mettre un observe_field sur les boxs car qu'elles ont toutes le meme id :

    <% for r in @checkboxliste %>
    <%= check_box_tag('refr[]', r.id, @requete.checkbox.include?(r)) + r.nom %>
    <% end %>

    @checkboxliste et @requete pointe sur les 2 tables en relation N-N

    Si quelqu'un a une id, je suis preneur...

    Merci d'avance.
    Gyome.

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par gyome314
    mais je ne vois pas trop comment mettre un observe_field sur les boxs car qu'elles ont toutes le meme id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <% for r in @checkboxliste %>
    <%= check_box_tag('refr[]', r.id, @requete.checkbox.include?(r)) + r.nom %>
    <% end %>
    Je ne comprends pas ta phrase, en regardant ton code en quoi les check box ont le meme id ?

    Sache qu'en html il est interdit d'avoir deux éléments avec le meme id...

  3. #3
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut
    bah le souci c'est que dans la boucle for, ruby ne génère les checkbox à la volée, en leur attribuant à toutes le même identifiant qui se trouve être le premier paramètre de la fonction check_box_tag : refr[]...

    C'est aussi le moyen de passer en paramètres un tableau contenant directement les valeurs cochées.

    Maintenant, il y a probablement un autre moyen de faire, c'est un bout de code que j'ai récupéré pour gérer simplement les relations N-N.

  4. #4
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut Solution
    Avec un peu de persévérence, j'ai trouvé la solution que je cherchais depuis quelques jours...

    J'ai remplacer ma boucle for par celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <% for r in @checkboxsliste %>
        <input id="refr" name="refr[]" type="checkbox" value="<%= r.id %>"
        <%= "checked" if @requete.checkbox.include?(r) %>
        onclick = "
        <%= remote_function :update => 'table',
             :before => "Element.show('spinner')",
             :success => "Element.hide('spinner')",
             :url => {:action => 'reload', :id => @requete},
             :with => 'newcb=#{r.id}' %>
        "/>
        <%= r.nom + "<br />" %>
    <% end %>
    l'action reload de mon controller, traite le paramètre newcb, pour savoir s'il appartient ou non à la relation est fait un render partial sur la liste...

    Et effectivement, pour fait les choses proprement, je vais faire en sorte que les id de mes checkbox ne soient pas tous les mêmes avec un indice de boucle...

    Merci, A+

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par gyome314
    bah le souci c'est que dans la boucle for, ruby ne génère les checkbox à la volée, en leur attribuant à toutes le même identifiant qui se trouve être le premier paramètre de la fonction check_box_tag : refr[]...
    En effet, j'avais bien mal lu le code...
    Donc si tu fais un truc comme ça (non testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <% for r in @checkboxliste %>
    <%= check_box_tag('refr[]', r.id, @requete.checkbox.include?(r), { :id => 'refr_'+r.id } ) + r.nom %>
    <% end %>
    ça devrait te générer des id uniques...

  6. #6
    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
    Puisque tu as l'air en plein dedans, gyome314, je voudrais te demander de bien vouloir tester le cas où toutes les cases sont décochées, et me dire si tu ne remarques rien...
    Merci d'avance.
    C'est pour voir si tu arrives aux meme conclusions que moi

  7. #7
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut
    Je décoche, je décoche, mais je vois rien de particulier...

    Tu m'inquiètes, j'ai fait pas mal de tests, et ca tourne comme je le voulais.

    Je suis passé à coté de quelque chose ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise a jours Univers sur B.O XI R3
    Par unicefr dans le forum Administration-Migration
    Réponses: 4
    Dernier message: 24/04/2012, 13h05
  2. mise a jour somme sur dataset filtré
    Par Le Lézard dans le forum Bases de données
    Réponses: 5
    Dernier message: 01/02/2009, 19h27
  3. Mise a jour automatique sur excel?
    Par fredieuric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2006, 12h41

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