Verschachtelung von Layouts in Sinatra

8

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.

global

erb :pageTemplate führt layout.erb aus, wobei yield pageTemplate

ausführt

in der Teilmenge

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.

    
Pat Newell 20.06.2013, 14:15
quelle

2 Antworten

10

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!

    
Pat Newell 13.11.2013 16:58
quelle
4

global

%Vor%

in der Teilmenge

%Vor%

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%     
iain 21.06.2013 02:03
quelle

Tags und Links