Wie kann ich Instanzvariablen an eine HAML-Vorlage in der Befehlszeile übergeben?

8

Hintergrund

Ich versuche, die Formatierung einiger HAML-Vorlagen außerhalb von Rails zu testen. Die Idee besteht darin, einige Instanzvariablen in der Befehlszeile oder über eine eingeschlossene Ruby-Datei zu übergeben, wodurch die Vorlage zur Standardausgabe rendert wird. Ich habe diese verschiedenen Wege ohne Erfolg versucht, wie unten beschrieben.

Erfordert eine Ruby-Datei

Zum Beispiel bei den folgenden zwei Dateien:

  • HAML Vorlage: "test.haml"

    %Vor%
  • Ruby-Datei: "test.rb"

    %Vor%

Ich würde erwarten, dass ein Aufruf wie haml -r ./test test.haml eine interpolierte HTML-Datei auf die Standardausgabe zurückgibt, aber nicht. Stattdessen bekomme ich nur den HTML-Code:

%Vor%

Programmatic Versuch

Da dies nicht funktioniert hat, habe ich das auch programmatisch versucht. Zum Beispiel:

%Vor%

mit genau den gleichen Ergebnissen, z.B. nur das HTML ohne variable Interpolation.

Wiederholen der Frage

Natürlich ist noch etwas anderes erforderlich, damit HAML die Vorlage mit den zugehörigen Variablen rendern kann. Ich würde es vorziehen, dies über die Befehlszeile zu tun, entweder durch Übergeben von Argumenten oder durch Einfügen einer Datei. Wie sollte ich HAML über die Befehlszeile aufrufen, damit es funktioniert?

Wenn das aus irgendeinem Grund nicht möglich ist, wie soll ich HAML programmgesteuert aufrufen, um die Interpolation durchzuführen, ohne von Rails abhängig zu sein?

    
Todd A. Jacobs 15.04.2013, 22:04
quelle

2 Antworten

2

Der Grund, warum beide Beispiele nicht funktionieren, ist, dass Sie versuchen, auf Instanzvariablen aus einer anderen Klasse zuzugreifen. Die einfachste Lösung besteht darin, Methoden zu definieren und zu verwenden, anstatt zu versuchen, auf andere Klasseninstanzvariablen zuzugreifen, als wären es Ihre eigenen.

I.E. in test.rb

%Vor%

test.haml

%Vor%     
Alex.Bullard 15.04.2013, 22:26
quelle
12

Sie können der Methode render ein Bereichsobjekt und einen lokalen Variablenhash zuweisen. In Ihrem Beispielfall würden Sie anrufen:

%Vor%     
Zach Kemp 15.04.2013 22:25
quelle