2010-07-18 2 views
0

Dans ma dernière application Rails, j'ai décidé de ne restituer que les partiels à partir des méthodes auxiliaires.Factor out application_helper

Par exemple, dans application_helper.rb:

def render_header 
    render :partial => "partials/header" 
end 

Je fais cela pour rendre mon code un peu plus sec dans le cas où je renomme un partiel ou besoin d'ajouter dans la logique supplémentaire pour la commande qui est affiché partielle. L'inconvénient de ceci est qu'il gonfle rapidement application_helper.rb, qui se gonfle déjà assez rapidement sans cela.

Je me demande quelle est la façon la plus propre de diviser application_helper. Je pensais que je devrais créer une bibliothèque application_helpers dans lib /, et inclure un module différent pour chaque type d'aide que je veux, par exemple partial_helper.rb.

Cependant, je n'ai pas réussi à faire fonctionner ceci. J'ai placé le fichier dans lib/application_helpers/partial_helper.rb, et j'ai appelé le module "ApplicationHelpers :: PartialHelper". Je pensais que cela serait automatiquement chargé par Rails, et que dans mes vues je pourrais faire "PartialHelper.render_header", mais j'obtiens une erreur que cette méthode n'est pas définie sur PartialHelper. Une autre idée consistait simplement à inclure/requérir l'aide dans application_helper.rb, et à l'appeler normalement dans mes vues, mais cela ne fonctionnait pas non plus.

Des idées/solutions?

Merci, Zach

Répondre

4

Vous pouvez placer un fichier <whatever>_helper.rb dans app/helpers et Rails ramasser. Vous pourriez avoir partials_helper.rb, par exemple. Vous n'êtes pas limité à l'assistant d'application ou aux aides générés par les contrôleurs.

Exemple partials_helper.rb:

module PartialsHelper 
    def render_header 
    ... 
    end 
end