2009-05-08 7 views
0

Essayer d'utiliser this method (qui se résume à utiliser self.method_name dans le FunnyHelper, puis appelez comme FunnyHelper.method_name dans la vue).Rails à l'aide de routes nommées dans les aide (mais avec des méthodes de classe)

Cependant, cela provoque au moins deux problèmes - méthodes de vue comme h() et nommés itinéraires sont brisés (ils sont ok avec la méthode du module def method_name mais pas dans une méthode de classe def self.method_name).

Évidemment, je peux éviter cela en laissant tomber def self.method_name à def method_name; Quelqu'un at-il des suggestions sur la façon dont je peux avoir mon gâteau et le manger aussi?

Répondre

1

Si vous vraiment voulez faire, vous pouvez utiliser

include ActionController::UrlWriter 

pour obtenir l'accès à vos routes nommées et

# h is a private method 
ActionController::Base.helpers.send :h, "<" 

pour d'autres aides de vue. Mais je ne le recommanderais pas. À mon avis, le schéma de conception que suggère thinkobt ici est nul et j'utiliserais simplement helper: blogs malgré leur plainte que ce n'est pas explicite. C'est vrai, en quelque sorte ... mais Rails en général et cette partie de Rails en particulier est architecturée d'une manière complètement "non-explicite" alors essayer de lutter contre ça va être plus ennuyeux que ça en vaut la peine, car vous êtes découvrir.

Questions connexes