2010-11-23 16 views
2

Ich versuche, ein Plugin zu schreiben, und unter den Aufgaben, die ich ausführen möchte ich in der Lage sein, Route Helfer Methoden aus dem Plugin aufrufen. Zum Beispiel, wenn ich map.resources :user habe, möchte ich user_path(:id => 1) von meinem Plugin aufrufen können. Ich bekomme immer undefinierte Methode user_path error.Rails 2 Route Helfer in Plugin

In Schienen 3 können Sie dies mit Rails.application.routes.url_helpers tun, aber ich finde nicht in der Lage, eine Alternative für Schienen 2 zu finden. Einschließlich ActionController::UrlWriter hilft nicht. Irgendwelche Ideen?

Antwort

2

Ich bin mit Schienen 2.3.4 und ich kann meinen regelmäßigen Weg Helfer in den Controllern und Ansichten meiner Plugins, zumindest innerhalb der, die ich getestet verwenden .

Ich kann sie nicht in den lib-Dateien für die Plugins verwenden, aber das liegt daran, dass die Helfer außerhalb der Controller nicht verfügbar sind (die Ansichten werden innerhalb der Controller behandelt, damit sie sie auch verwenden können). Die lib-Dateien (das Fleisch der Plugins) tendieren dazu, Module und Klassen zu sein, die in die Modellumgebung geladen werden.

Können Sie weitere Details zu dem, was Sie tun möchten, angeben?

+0

Ich versuche, das [Gretel Breadcrumbs Plugin] zu beheben (https://github.com/lassebunk/gretel /) um Schienen 2 kompatibel zu sein. Das Problem, das Sie angegeben haben, ist in den lib-Dateien, haben Sie irgendwelche Vorschläge? – Faisal

+0

Sie hatten Recht auf das Geld, das Problem war, dass ich versuchte, sie in den Lib-Dateien anstelle von Controller/View/Helfer zu verwenden. Ich habe es nicht schnell verstanden, weil ich lambdas verwendete und Verschlüsse nicht ganz verstand (das lambda wurde im Helfer aufgerufen, aber es hatte den Umfang der lib-Datei). Danke für deine Antwort. – Faisal

+1

Können Sie die Lösung teilen? Weil ich es aus diesen Kommentaren nicht herausfinden kann, wie hast du das Plugin mit rails 2.3 benutzt –

0

Sie sollten in der Lage sein zu tun:

app.user_path(1) 
+0

dies funktioniert von der Konsole aus, aber in meinem Plugin heißt es: undefinierte lokale Variable oder Methode "app" – Faisal