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 :

Require 'helper' possible ?


Sujet :

Ruby on Rails

  1. #1
    Membre éclairé

    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
    Points : 652
    Points
    652
    Par défaut Require 'helper' possible ?
    Bonjour,

    Pour le controleur 'acteurs_controller.rb' j'ai fait un helper 'acteurs_helpers.rb', qui contient, en particulier, la méthode 'nom_complet' qui renvoit la civilité+le nom+le prénom.

    Or j'ai besoin de cette méthode, depuis un autre controleur.
    Je n'arrive pas à appeler la méthode depuis cet autre controleur.
    Avec require 'helpers/acteurs_helper' le fichier est correctement trouvé, mais la méthode ne marche pas.

    Evidemment vous allez me dire de mettre la méthode dans le helper 'application_helper.rb', mais je trouve cette solution lourde, car je ne veux pas appeler cette méthode tout le temps, j'en ai juste besoin pour 1 vue.

    Merci d'avance si vous pouvez m'aider

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    Pourtant, c'est le mieux a faire.
    Ca n'a rien de lourd si c'est une méthode. tu l'utilise dans les controlleurs ou tu en as besoin.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,
    C'est pas ça que tu veux faire ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    premier_helper.rb :
    module PremierHelper
      def ta_methode
        ...
      end
    end
     
    autre_helper.rb :
    module AutreHelper
      include PremierHelper
    end
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  4. #4
    Membre éclairé

    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
    Points : 652
    Points
    652
    Par défaut
    Pourtant, c'est le mieux a faire.
    Ca n'a rien de lourd si c'est une méthode. tu l'utilise dans les controlleurs ou tu en as besoin.
    Ce qui est lourd, c'est d'avoir une méthode qui te suis partout dans l'application, alors qu'elle ne sert qu'à un endroit particulier.
    De plus, cette méthode ne s'applique que pour le modele pour lequel elle a été écrite. (elle teste le type d'acteur avant de renvoyer un résultat) Donc je trouve malvenu de la trimbaler partout. Pour une question de propreté, je préfere qu'elle soit dans le helper qui lui correspond.
    Voila mon probleme, c'est que j'ai un cas trééééés particulier où j'en ai besoin alors que je suis dans un autre controleur.

    premier_helper.rb :
    module PremierHelper
    def ta_methode
    ...
    end
    end

    autre_helper.rb :
    module AutreHelper
    include PremierHelper
    end
    Pas mal ça ! C'est pas vraiment ce que je cherche à faire, mais je note la manip qui pourra resservir pour une autre occasion !
    (Je l'utilise pour mon cas, car elle a le mérite marcher, mais c'est en attendant de trouver mieux).
    Ce qui est dommage c'est d'etre obligé de charger TOUT le helper, d'une part, et d'autre part, de ne pas pouvoir l'utiliser depuis 1 seule action. (j'en ai besoin que dans un cas, pas partout dans le controleur...)

    Merci pour les réponses.

  5. #5
    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
    et un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      module MyHelper
        def hello_world() "hello world" end
      end
     
    ---------------------------------------------
     
      class MyController < ActionController::Base
        helper :my_helper
      end
    http://api.rubyonrails.org/classes/A...ssMethods.html
    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

  6. #6
    Membre éclairé

    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
    Points : 652
    Points
    652
    Par défaut
    Salut Titou,

    module MyHelper
    def hello_world() "hello world" end
    end

    ---------------------------------------------

    class MyController < ActionController::Base
    helper :my_helper
    end
    Je viens d'essayer ton truc, bon c'est ok ça marche, mais c'est pas ça non plus que je cherche à faire.
    Dans ce cas on a encore TOUT le helper "étranger" qui est chargé (alors que je n'ai besoin que d'1 méthode) et ce helper est chargé pour tout le controleur, alors que j'en ai besoin que dans 1 action.

    Merci quand meme.
    N'emepeche qu'on découvre des trucs comme ça !

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Merci Titou, je ne connaissait pas helper pour inclure un helper dans un controlleur, je viens de convertir tout mes include en helper


    Zfred:
    Si tu n'as qu'une méthode commune entre les deux controllers, pourquoi tu ne factorise pas cette méthode dans un fichier pour ensuite l'inclure dans les deux controllers ?

    Pour ce qui est de l'inclure pour une action uniquement, a priori les helpers sont gérés par controllers
    Est-ce que ça te pose vraiment un problème ?
    Dans la théorie un controller ne devrait pas avoir trop d'actions de toute façon, donc tu ne devrais pas avoir de collision entre les noms sur un même controller
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  8. #8
    Membre éclairé

    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
    Points : 652
    Points
    652
    Par défaut
    Si tu n'as qu'une méthode commune entre les deux controllers, pourquoi tu ne factorise pas cette méthode dans un fichier pour ensuite l'inclure dans les deux controllers ?
    Ah beh oui tiens, c'est une idée !
    Disons que au départ, je cherchais à appeler une méthode qui est dans un helper différent du controleur où j'en ai besoin. Je n'envisageais pas de déplacer la méthode dans un autre fichier, vu qu'elle est bien là où elle est.
    Mais pourquoi pas !
    J'aurai bien aimé pouvoir dire à Rails : Pour cette action, exceptionnellement, tu as besoin d'une méthode qui se trouve "là bas dans un helper" ---> va la chercher !

    En tout cas, merci pour les réponses

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

Discussions similaires

  1. [D7][TreeView/ListView] Combien d'items possibles ?
    Par phplive dans le forum Composants VCL
    Réponses: 6
    Dernier message: 09/04/2003, 22h40
  2. Application 'classique' possible en java ?
    Par jeanphy dans le forum JBuilder
    Réponses: 3
    Dernier message: 26/03/2003, 22h24
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22
  5. MDI sans MFC, possible ?
    Par delire8 dans le forum MFC
    Réponses: 4
    Dernier message: 17/06/2002, 07h38

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