2009-05-08 5 views
0

Versuchen, this method zu verwenden (worüber self.method_name in der FunnyHelper verwenden, dann rufen Sie es als FunnyHelper.method_name in der Ansicht).Rails mit benannten Routen in Helper (aber mit Klassenmethoden)

aber dies zumindest ein paar Probleme verursacht - Ansicht Methoden wie h() und benannte Routen kaputt gehen (sie sind ok mit der Modul-Methode def method_name aber nicht innerhalb einer Klassenmethode def self.method_name).

Offensichtlich kann ich dies vermeiden, indem ich die def self.method_name zurück zu def method_name; jemand mit irgendwelchen Vorschlägen, wie ich meinen Kuchen haben und es auch essen kann?

Antwort

1

Wenn Sie wirklich dies tun wollen, können Sie

include ActionController::UrlWriter 

Zugang zu Ihrem Namen Routen und

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

für andere Ansicht Helfer zu bekommen. Aber ich würde es nicht empfehlen. Meiner Meinung nach ist das Designmuster, das hier angedeutet wird, stinkend und ich würde nur Helfer benutzen: Blogs trotz ihrer Beschwerde, dass es nicht explizit ist. Das ist wahr, irgendwie ... aber Rails im Allgemeinen und dieser Teil von Rails im Besonderen ist auf eine völlig "nicht explizite" Art und Weise aufgebaut, also wird der Versuch, dagegen anzukämpfen, mehr Ärger sein, als es wert ist, wie Sie es sind entdecken.