2012-03-25 20 views
6

Tengo un proyecto de Middleman y necesito emular a un usuario con sesión iniciada.Pasar una variable a la plantilla en Middleman 2

Bastante simple: sería bueno establecer alguna variable global como @user = 1 en config.rb, codificar todo para el usuario conectado, luego establecer la variable a 0 y codificar todo para el usuario desconectado poniendo si está en todas partes

No soy un codificador de Ruby, así que no entiendo dónde engancharme. Entonces, ¿cómo puedo establecer una variable de aplicación global en config.rb de un intermediario?

+0

[Middleman] (http://middlemanapp.com/) es un generador de sitio estático. ¿Qué quieres decir con iniciar sesión? –

+0

Escribí: *** emula un usuario conectado ***. Luego lo expliqué en la siguiente oración. Necesito definir una variable en config.rb, luego make es visible para la plantilla. – Guard

Respuesta

12

Puede configurar variable sobre rutas específicas utilizando la page ayudante:

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

Si desea utilizar una sola plantilla, que incluyen una declaración if para manejar los cambios de contenido basado en is_logged_in, se utilizaría una página 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 } 

Para las variables directos, utilice set:

set :is_logged_in, true 

En plantilla:

<%= is_logged_in %> 
+0

Gracias por los aspectos más destacados. Estos van directamente a config.rb, ¿verdad? Pero en realidad lo que necesito es un poco más simple: quiero que se vea esta var en todas las plantillas. En realidad, se necesita principalmente para el diseño: el encabezado y el pie de página son diferentes para los usuarios que inician sesión o que dejan de ingresar, y tendré if en ambos. I (y otros codificadores) cambiarán la variable en config.rb y verán el sitio en 2 modos. – Guard

+0

Editado el post anterior con información sobre 'conjunto' –

+0

Oh, genial. Gracias de nuevo – Guard

Cuestiones relacionadas