Estoy usando la biblioteca de formularios para Node.js ( Formularios ), que me representará un formulario en el backend 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 trato de 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 de HTML real (y, por lo tanto, un formulario como quiero). ¿Hay alguna forma de hacer que esa 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 El antiguo ejs (v0.5.x, 0.8.5, v1.0.0) está disponible aquí https: / /github.com/tj/ejs
Ahora con ejs puedes hacer aún más. Puedes usar:
<%= %>
escape con (función de escape configurable)<%- %>
-%>
etiqueta final<%_ _%>
<% %>
Entonces, en tu caso, será
<%- variable %>
dondevariable
haya algo comoEspero que esto ayude a alguien. 🙂
fuente
Tuve el mismo problema con la representación de la entrada del área de texto desde un editor wysiwyg guardado como html en mi base de datos. El navegador no lo procesará, pero mostrará el html como texto. Después de horas de búsqueda, descubrí
<%= data %>
datos escapados mientras<%- data %>
dejó los datos 'sin formato' (sin escape) y el navegador ahora podría representarlos.fuente