Teilweise HAML-Templating in Ruby ohne Rails
Ich wirklich don ' T müssen den Aufwand der Schienen für mein sehr kleines Projekt, so versuche ich dies erreichen Sie einfach mit einfach nur Ruby und HAML.
Möchte ich um eine weitere HAML-Datei in meinem HAML-template. Aber ich habe nicht gefunden eine gute oder wirklich brauchbare—Möglichkeit, dies zu tun.
Zum Beispiel habe ich diese beiden HAML-Dateien:
Dokumente.haml
%html
%body
= include(menu.haml) body
%article …
Menü.haml
%ul
%li
%a whatever …
Zählen ist offensichtlich nicht der Weg, hier zu gehen. Aber es ist eine schöne Aufgabe, die beschreiben, was ich versuche zu erreichen, in diesem Beispiel.
InformationsquelleAutor der Frage Aeyoun | 2011-03-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich dies getan, bevor, nur für einen quick-and-dirty-Vorlage Produzent. Der einfachste Weg ist das Rendern der HAML innerhalb des übergeordneten Objekts:
Werden Sie mehr als wahrscheinlich wollen, erstellen Sie einige Methoden, um dies zu erleichtern--ein paar Hilfsmethoden. Vielleicht schreiben Sie, man nannte render_file, nimmt einen Dateinamen als argument. Diese Methode könnte so Aussehen:
Dann dein template Aussehen würde, und mehr wie:
Beachten, werden Sie wahrscheinlich benötigen, um passieren, das selbst die original-Haml::Engine Rendern, so dass es weiß, wie Sie Ihre render_file Methode.
InformationsquelleAutor der Antwort David Richards
Ich bin völlig empfehlen die Tilt Juwel für diese Dinge. Es bietet eine standard-Schnittstelle für das Rendern von vielen anderen Vorlage langages mit demselben API können Sie benutzerdefinierte Rahmen und einheimische, können Sie den Ertrag, ist robust und schnell. Sinatra ist die Verwendung von templates.
Beispiel:
Diese können Sie
yield
im layout zu bekommen, wird die gerenderte Vorlage, genau wie die Schienen. Wie für die Teiltöne, die David bereits beschrieben, eine einfache und schöne Art zu gehen.Aber eigentlich, wenn das, was Sie schreiben wird serviert-über-HTTP, ich schlage vor, Sie nehmen einen Blick auf Sinatradie bereits die templating, und hat die einfachste request routing könnte man sich vorstellen.
InformationsquelleAutor der Antwort Jostein
Habe ich großen Erfolg hatte das nur mit Hilfe der Anweisungen geschrieben von David Richards in einer verketteten Weise, ohne die Variablen, wie folgt:
= Haml::Engine.new(File.read('/Volumes/Project/file_to_include.haml')).render
Gibt es natürlich ein eleganter Weg. Aber für jemanden, der will nur eine oder zwei Dateien, das sollte gut funktionieren. Es ist ein Nachteil, dass alle base-Dateien mit Hilfe dieser umfasst neu kompiliert werden, nachdem einige änderungen an den letzteren. Es könnte interessant sein, nur mit php-include, wenn die Umgebung dies zulässt.
InformationsquelleAutor der Antwort Sascha Michael Trinkaus
InformationsquelleAutor der Antwort McNally Paulo
(Hinzufügen dieses semi-redundante Antwort, um zu zeigen, wie man vielleicht integrieren Sie die Techniken von anderen Antworten.)
Etwas ähnliches in Ihrem setup-code zum monkey-patch die Haml-Bibliothek.
Dann in Ihre Haml-Datei
Offensichtlich ist dies eine Rails-ish Beispiel (weil ich das nutzen wollte HAML in meinem asset-pipeline statt als views)... Sie ersetzen möchten
Rails.root.join(...)
einen Weg zu findenfilename
in Ihr Projekt-Vorlagen oder partials-Verzeichnis.InformationsquelleAutor der Antwort mlibby