2012-03-25 9 views
6

Ich habe ein Middleman-Projekt und ich muss einen angemeldeten Benutzer emulieren.Übergeben Sie eine Variable zu Vorlage in Middleman 2

Einfach genug - wäre in Ordnung, eine globale Variable wie @user = 1 in config.rb zu setzen, alles für den angemeldeten Benutzer zu codieren, dann die Variable auf 0 zu setzen und alles für den abgemeldeten Benutzer zu programmieren Wenn's überall ist

Ich bin kein Ruby-Programmierer, also verstehe ich nicht, wo man einhakt. Also: Wie kann ich eine globale App-Variable in einem config.rb des Mittelsmannes setzen?

+0

[Middleman] (http://middlemanapp.com/) ist eine statische Seite Generator. Was meinst du mit loggen in? –

+0

Ich schrieb: *** emulieren einen angemeldeten Benutzer ***. Dann habe ich es im nächsten Satz erklärt. Ich muss eine Variable in config.rb definieren, dann ist make für die Vorlage sichtbar. – Guard

Antwort

12

Sie Variable auf bestimmte Pfade festlegen können die page Helfer mit:

page "/my-page.html", :locals => { :is_logged_in => true } 

Wenn Sie eine einzelne Vorlage verwenden wollte, die eine if Erklärung enthalten Inhaltsänderungen auf is_logged_in Basis zu behandeln, würden Sie eine Seite verwenden Proxy:

page "/my-page-logged-in.html", :proxy => "/my-page.html", :locals => { :is_logged_in => true } 
page "/my-page-logged-out.html", :proxy => "/my-page.html", :locals => { :is_logged_in => false } 

Bei direkten Variablen verwenden set:

set :is_logged_in, true 

In Vorlage:

<%= is_logged_in %> 
+0

Danke für die Highlights. Diese gehen direkt zu config.rb, oder? Aber was ich brauche, ist ein bisschen einfacher - ich möchte, dass diese Variable in allen Vorlagen angezeigt wird. Eigentlich wird es hauptsächlich für das Layout benötigt: Kopfzeile und Fußzeile sind für angemeldete Benutzer unterschiedlich und ich habe wenn beide vorhanden sind. I (und andere Codierer) werden dann die Variable in config.rb wechseln und die Site in 2 Modi anzeigen. – Guard

+0

Bearbeitet den obigen Beitrag mit Informationen über 'set' –

+0

Oh, großartig. Danke nochmal – Guard

Verwandte Themen