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 :

Exécution d'une fonction ruby/rails à partir de javascript


Sujet :

Ruby on Rails

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut Exécution d'une fonction ruby/rails à partir de javascript
    Bonjour,

    Je suis arrivé à un problème, lequel je pense, doit être de simple résolution.

    Voilà, j'ai une application rails.

    Dans une des pages webs de mon application rails, j'ai un bouton qui exécute une fonction javascript. Cette fonction javascript construit une String.

    Je voudrais ensuite qu'une fonction du coté serveur soit exécuter en recevant la string générer en javascript.

    Je voudrais donc que ma fonction javascript fasse un appel à une fonction rails.

    Je sais que l'on peut faire par exemple un truc du genre à partir du javascript:
    window.location.href="/mycontroller/controller_function?string='aaa'

    De cette façon, la méthode "controller_function" de mon controller "mycontroller" est appelée avec la string "aaa" en paramètre.

    Mais cela fait en sorte qu'il y ai un rafraichissement de la page. L'appli s'attend même à ce qu'il existe une page web nommée controller_function.rhtml

    Cependant, je voudrait qu'il n'y ai aucun rafraichissement de page. La fonction ne doit retourner aucun résultat ni originer un changement de la page. En résumant, je voudrais qu'en appuyant sur le bouton de la page, la fonction rails soit exécutée et rien de plus.

    Comment faire cela?

    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 127
    Points : 124
    Points
    124
    Par défaut
    Tu souhaites donc faire de l'Ajax.

    Regarde ici : http://www.prototypejs.org/api/ajax/request

    Prototype est un framework Javascript intégré avec rails, pour pouvoir l'utiliser tu dois ajouter <%= javascript_include_tag :defaults %> dans ta page.

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut
    Merci pour la réponse.

    J'ai testé et ça n'a pas l'air mal. Cependant j'ai un doute.

    Mon code javascript qui appèle ma fonction rails:

    var url = "/ctrl/imprimer";
    new Ajax.Request(url, {
    method: 'get',
    parameters: 'docs='+ to_print,
    onComplete: afficherReponse
    });

    Ma fonction rails qui se trouve dans mon controller ctrl_controller:

    def imprimer
    puts ">>>>>>>>>>>>>>>>> params[:docs]: " + params[:docs].to_s
    @sMsg = "Impression effectuée"
    end


    1 - Ma méthode rails est bien exécutée mais elle génère une erreur car elle ne trouve pas le fichier ctrl/imprimer.rhtml

    2 - ma méthode afficherReponse n'est pas exécutée. Probablement à cause du point 1.

    Comment faire pour que cette erreur ne soit pas générée?

    merci!

    Citation Envoyé par Mookie Voir le message
    Tu souhaites donc faire de l'Ajax.

    Regarde ici : http://www.prototypejs.org/api/ajax/request

    Prototype est un framework Javascript intégré avec rails, pour pouvoir l'utiliser tu dois ajouter <%= javascript_include_tag :defaults %> dans ta page.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par pjmorce Voir le message
    1 - Ma méthode rails est bien exécutée mais elle génère une erreur car elle ne trouve pas le fichier ctrl/imprimer.rhtml
    Créer une vue portant le nom imprimer.rhtml dans views/ctrl ?
    Ou sinon plutot que de rendre une vue RHTML, tu renvoies directement du text, avec render :text => 'blabla'

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut
    Mon objectif est de ne pas créer une view ou une autre page.

    Mon objectif est d'à partir d'une page, faire appel à ma fonction rails, mais en faisant en sorte que la page de départ se maintienne intacte. C'est à dire, qu'il n'y ai aucun redirectionnement de page.

    Merci

    Citation Envoyé par SekYo Voir le message
    Créer une vue portant le nom imprimer.rhtml dans views/ctrl ?
    Ou sinon plutot que de rendre une vue RHTML, tu renvoies directement du text, avec render :text => 'blabla'

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut
    En mettant un render_text ça a marché. Je ne m'y attendait pas car je pensais qu'il ouvrirait une nouvelle page avec le texte indiqué...

    Merci!

    Citation Envoyé par pjmorce Voir le message
    Mon objectif est de ne pas créer une view ou une autre page.

    Mon objectif est d'à partir d'une page, faire appel à ma fonction rails, mais en faisant en sorte que la page de départ se maintienne intacte. C'est à dire, qu'il n'y ai aucun redirectionnement de page.

    Merci

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par pjmorce Voir le message
    Mon objectif est de ne pas créer une view ou une autre page.
    Mon objectif est d'à partir d'une page, faire appel à ma fonction rails, mais en faisant en sorte que la page de départ se maintienne intacte. C'est à dire, qu'il n'y ai aucun redirectionnement de page.
    Attention, a partir du moment ou tu veux que ton action du contrôleur serve a quelque chose elle DOIT renvoyer des données au navigateur (je met de coté les méthodes private des contrôleur). Après c'est toi qui décides ce que tu renvoies (HTML, XML, JSON, texte brut, CVS, PDF, image JPEG etc...) et comment tu l'utilises (affichage direct par le navigateur, modification d'une partie d'une page ou parsing du XML via un script JS, téléchargement d'un fichier etc...)

    En bref, une action d'un contrôleur ne correspond pas forcément a une nouvelle page de ton site.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/05/2008, 14h42
  2. Exécution d'une fonction à partir d'un window.opener
    Par mic79 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/04/2007, 15h01
  3. Exécution d'une fonction Matlab à partir de C++
    Par wassimb dans le forum MATLAB
    Réponses: 1
    Dernier message: 15/03/2007, 13h00
  4. Pause dans l'exécution d'une fonction
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/06/2005, 07h48
  5. Exécution d'une fonction...
    Par mickeliette dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/11/2004, 16h59

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