2012-03-25 22 views
6

Ho un progetto Middleman e devo emulare un utente loggato.Passa una variabile al modello in Middleman 2

abbastanza semplice - sarebbe bene impostare una variabile globale come @user = 1 in config.rb, codice di tutto per l'utente connesso, quindi impostare la variabile a 0 e il codice tutto per l'utente connesso out mettendo se è ovunque

Non sono un codificatore Ruby quindi non capisco dove collegare. Quindi: come posso impostare una variabile di app globale nel file config.rb di un middleman?

+0

[Middleman] (http://middlemanapp.com/) è un generatore di sito statico. Cosa intendi con l'accesso? –

+0

Ho scritto: *** emula un utente registrato ***. Poi l'ho spiegato nella frase successiva. Ho bisogno di definire una variabile in config.rb, quindi rendere visibile al modello. – Guard

risposta

12

È possibile impostare la variabile su percorsi specifici utilizzando il page aiutante:

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

Se si voleva utilizzare un unico modello, che include un if dichiarazione di gestire le modifiche dei contenuti basate su is_logged_in, si usa una pagina 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 } 

Per le variabili dirette, utilizzare set:

set :is_logged_in, true 

in Template:

<%= is_logged_in %> 
+0

Grazie per i punti salienti. Questi vanno direttamente a config.rb, giusto? Ma in realtà ciò di cui ho bisogno è un po 'più semplice - voglio che questa var sia visibile in tutti i template. In realtà è principalmente necessario per il layout: intestazione e piè di pagina sono diversi per gli utenti registrati/fuori, e avrò se c'è in entrambi. I (e altri codificatori) cambieranno quindi la variabile in config.rb e visualizzeranno il sito in 2 modalità. – Guard

+0

Modificato il post precedente con informazioni su 'set' –

+0

Oh, fantastico. Grazie ancora – Guard

Problemi correlati