variable pass node node.js express ejs

node.js - node - express render pass variable



Renderiza una variable como HTML en EJS (2)

Estoy usando la biblioteca de Formularios para Node.js ( Forms ), que me mostrará un formulario en el back-end de la siguiente manera:

var signup_form = forms.create({ username: fields.string({required: true}) , password: fields.password({required: true}) , confirm: fields.password({ required: true , validators: [validators.matchField(''password'')] }) , email: fields.email() }); var signup_form_as_html = signup_form.toHTML();

La última línea var signup_var signup_form_as_html = signup_form.toHTML(); crea un bloque de HTML que se ve así:

<div class="field required"><label for="id_username">Username</label><input type="text" name="username" id="id_username" /></div><div class="field required"><label for="id_password">Password</label><input type="password" name="password" id="id_password" /></div><div class="field required"><label for="id_confirm">Confirm</label><input type="password" name="confirm" id="id_confirm" /></div><div class="field"><label for="id_email">Email</label><input type="text" name="email" id="id_email" /></div>

Básicamente solo una larga cadena de HTML. Luego intento renderizarlo usando EJS y Express usando el siguiente código:

res.render(''signup.ejs'', { session: loginStatus(req) , form: signup_form_as_html });

Pero al renderizar, el HTML es simplemente la cadena que publiqué anteriormente, en lugar del HTML real (y, por lo tanto, un formulario como yo quiero). ¿Hay alguna manera de hacer que la cadena se represente como HTML real usando EJS? ¿O tendré que usar algo como Jade?


Actualización de octubre de 2017

El nuevo desarrollo de ejs (v2, v2.5.7) está sucediendo aquí: https://github.com/mde/ejs Los antiguos ejs (v0.5.x, 0.8.5, v1.0.0) están disponibles aquí https://github.com/tj/ejs

Ahora con ejs puedes hacer aún más. Puedes usar:

  • Salida escapada con <%= %> (función de escape configurable)
  • Salida sin procesar de Unescaped con <%- %>
  • Modo de ajuste Newline (''nueva línea sorbiendo'') con -%> etiqueta final
  • Modo de ajuste del espacio en blanco (absorber todos los espacios en blanco) para controlar el flujo con <%_ _%>
  • Control de flujo con <% %>

Entonces, en tu caso, va a ser <%- variable %> donde la variable es algo así como

var variable = "text here <br> and some more text here";

Espero que esto ayude a alguien. 🙂


Con ejs puedes tener

<% code %>

... que es un código que se evalúa pero no se imprime.

<%= code %>

... que es un código que se evalúa y se imprime (se escapó).

<%- code %>

... que es un código que se evalúa y se imprime (no se escapa).

Como quiera imprimir su variable y NO escapar de ella, su código sería el último tipo (con el -<% ). En tu caso:

<%- my_form_content %>

Para obtener más información, consulte la documentación completa de ejs