tl; dr: Gibt es eine saubere Möglichkeit, Layouts in Sinatra zu verschachteln?
Für alle Seiten meiner Site habe ich eine gemeinsame layout.erb, die eine Kopfzeile, eine Fußzeile und einige andere Bits darstellt.
Für eine Teilmenge dieser Seiten möchte ich ein inneres Layout verwenden, das zusätzlich zu diesen allgemeinen Bits ein linkes Menü darstellt.
erb :pageTemplate
führt layout.erb aus, wobei yield
pageTemplate
erb :pageTemplate
führt layout.erb aus, wobei yield
specificLayout.erb ausführt, wobei yield
pageTemplate ausführt.
Sinn machen?
Ich bin offen für separate Klassen, vor Aussagen und anderen Rubinkarikaturen. Ich bin nicht auf der Suche nach Hinzufügen von Kopf- / Fußteil Teiltöne und in jedem Layout enthalten.
Es gefunden! Ссылка
%Vor% Nun kann :site_layout
die Kopf- und Fußzeile enthalten, :region_layout
kann die linke Navigation enthalten und :page
muss sich nur um den Seiteninhalt kümmern!
Bearbeiten:
Eine Möglichkeit ist die Verwendung von Teiltönen, entweder über Erb oder Sinatra Partial (Ich bin der Betreuer, ich tue nicht Ich bekomme kein Geld für diese Werbung;)
Übergeben Sie ein Flag an das Layout, das das Rendering beeinflusst:
%Vor%in der Route:
%Vor%Wenn du feststellst, dass eine ganze Reihe von Routen die gleiche Flagge haben wollen, hilft ein bisschen Vererbung:
%Vor%Ausführen:
%Vor%