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 :

[AJAX] Problème de mise à jour de formulaire


Sujet :

Ruby on Rails

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut [AJAX] Problème de mise à jour de formulaire
    Bonjour,
    je dois remplir un formulaire très compliqué et avec beaucoup de contrainte, et je veux afficher des donneées en fonction de la valeur d'autres champs. tout ceci en faisant des appels ajax pour ne pas recharger le formulaire. par exemple j'ai une liste deroulante

    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%= form.select :sexe, Personne::SEXE_TYPES, :prompt => "Sexe","Fonction" => remote_function(:update => 'table', :url => { :action => :test })%></p>
    mais je n'arrive pas a trouver la "fonction" qui détécte la mise a jour du champs ':sexe'. car si le sexe de l personne est feminin il faut entrer un champ qui apparait apres qu'est le nom de la jeune fille.

    2.de plus je dois faire apparaitre un autre champ en fonction de la valeur du champ suivant. aussi en ajax mais je ne vois pas comment faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%= form.text_field :dep_naiss, :size=>"2"%>
    3.et enfin je cherche a faire des tooltiptext (en java swing) avec un fonction ajax. je suis un débutant donc je peux faires des erreurs bêtes.
    Merci

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Bonjour

    Pour vérifier qu'un champs a changé ou pas, j'utilise un observe_field.

    ça va te permettre d'exécuter l'action qui va bien si la personne est une femme, et donc d'insérer ton champs en plus (par exemple avec un page.insert_html dans un div vide prévu à cet effet)
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut Probleme
    le observe field ne fais pas d'effet du tout regarde voici mon code y'aurait il un problème dedans

    controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def test
    @personne = Personne.new(params[:personne])
    @personne.sexe = params[:sexe]
     
      if request.xml_http_request?
          render :partial => "nom_jeune_fille", :layout => false
     
      end
      end
    vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <%= form.select :sexe, Personne::SEXE_TYPES, :prompt => "Sexe"%></p>
     
             <%= observe_field(:sexe,
                     :frequency => 0.1,
                     :update => :table,
                     :url => {:action => 'test'}
                     ) %>
    Aucun mise ajour pas d'appel ajax en console server rien du tout y'a til une erreur)

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    un petit exemple d'ajout dynamique dans un formulaire (j'ai juste crée un controlleur "test") :

    application.rhtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
            <%= javascript_include_tag :defaults %>
            <title>Test d'ajout dynamique dans un formulaire</title>
        </head>
        <body<%= @body_extras %>>
            <%= yield %>
        </body>
    </html>
    test_controller.rb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class TestController < ApplicationController
     def check_ajout_form
     
        user_sexe = params[:sexe]
     
        if user_sexe == "femme"
          render :partial => "celibataire_form"
        else
          render :text => "Les hommes ne m'interessent pas !"
        end
      end
    end
    index.rhtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <%= form_tag :action=>'index' %>
        <label>Sexe :</label>
        <%= text_field('profile', 'sexe') %>
        Region :
        <div id="celibataire">-</div>
        <%= observe_field 'profile_sexe',
                :url=>{:action=>'check_ajout_form'},
                :update=>"celibataire",
                :with => "'sexe=' + escape(value)"
        %>
    <%= end_form_tag %>
    et enfin _celibataire_form.rhtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label>Etes-vous célibataire ?</label>
    <%= text_field('profile', 'celibataire') %>
    Il suffit que tu tapes "femme" dans le champs pour en faire apparaitre un second, sinon il t'affiche un petit message...

    normalement, ça devrait te mettre sur la bonne voie
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut Merci
    merci ca marche pour les texte field et j'en vais quelques un a mettre a jour. seul probleme c pour le sexe de la personne ce un liste déroulante et la ca marche plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <p><label for="personne_sexe">Sexe</label>
                <%= form.select :sexe, Personne::SEXE_TYPES, :prompt => "Sexe"%></p>
    de plus une autre question se pose a moi comment faire pour récupérer proprement la valeur d'un checkbox en ajax avec ruby

    je fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <%= check_box :k_ant,params[:k_ant],:checked=>false ,:with =>:k_ant,
    "onclick" => remote_function(:update => 'c_ant', :url => { :action => :cancer_ant },
    :complete => visual_effect( :highlight,
                                 "c_ant"))%>
    et dans mes parametres je n'arrive pas a savoir si ma checkbox est coché ou pas quelq'un pour m'aider

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 84
    Points
    84
    Par défaut
    As-tu résolu le problème pour les liste déroulantes car je pense etre confronté au même problème:

    vue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <% form_tag :action => 'update', :id => @cour do %>
     
    <!-- on choisit le type de doc -->
    <p><label for="type_article">Choissisez le type de votre article:</label><br/>
    <%= select :cour, :type_article, {"cours"=>"c", "exercice"=>"ex"},:include_blank=>true %>
     
    <!-- On oberve la boite de selection pour générer le formulaire ajax -->
    <%= observe_field 'type_article',
    				  :update => "formulaire",
    				  :url=>{:action=>'generation_form'},
    				  :with=>"'type_article=' + escape(value)",
    				  %>
     
    <div id="formulaire">-</div>
     
    <%= submit_tag 'Edit' %>
    <% end %>
    Controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def generation_form
        type_article = params[:type_article]
        if type_article == "ex" 
        render :partial => "formex"
        else
        render :partial => "formart"
        end
      end
    le partial _formex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (formualaire exo)
    <p><label for="cour_content">Contenu</label><br/>
    <%= text_area 'cour', 'content'  %></p>
    aucune erreur ne s'affiche mais la page ne se met pas à jour en changeant choissisant un nouveaux type d'article dans la liste deroulante.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut ajax
    si tu ne genere pas d'ajax c'est que tu observe le mauvais champs dans ta page.
    le nom de ton observefield de l'objet que tu surveille doit etre doit etre "cour_type_article".

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 84
    Points
    84
    Par défaut
    ca marche, merci beaucoup. (c'était tout bête mais je tournais en rond)

    J'ai pas mal d'effets secondaires peu désirable mais je vais essayer de gérer tout ca ^

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut précision d'un malheureux
    le nom exact semble etre
    cours[type_article]
    et non
    cours_type_article
    non plus
    cour
    et non plus
    cours_cours_article



    je précise par ce que j'ai cherché un moment avant d'y arriver !

    merci en tout cas ca m'avais bien mis sur la voie

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

Discussions similaires

  1. [MySQL] Problèmes envoi/mise à jour données formulaire
    Par cooldude dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/10/2010, 15h23
  2. Réponses: 1
    Dernier message: 15/10/2009, 10h11
  3. [AJAX] Mise à jour du "select" en ajax
    Par MeHo_ dans le forum AJAX
    Réponses: 15
    Dernier message: 30/04/2009, 17h26
  4. [A-03] Problème de mise à jour d'un formulaire
    Par gillesvic dans le forum IHM
    Réponses: 2
    Dernier message: 16/12/2008, 10h44
  5. Réponses: 2
    Dernier message: 04/04/2007, 11h14

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