Cómo pasar un valor desde req.render() a ejs y luego desde esa plantilla ejs a otra.
server.js
app
.route("/")
.get((req, res) => {
res.render("home", { tofirstejs: usercount });
})
<h2>```</h2>
<h2>home.ejs</h2>
<%- include('partials/header.ejs', {tolastejs:tofirstejs}); -%>
<%- include('partials/signin.ejs'); -%>
<%- include('partials/footer.ejs'); -%>
“`
header.ejs
“`
<body>
<div id="alert"></div>
<h3> <%= tolastejs% > usuario</h3>
//quiere el valor inicial de usercount aquí
</body>
<h2>“`
Quiero saber cómo pasar el valor a través de varias EJS. Puedo resolver este problema reduciendo la EJS intermedia y llamando directamente a la final, pero mi intención es aprender. Así que si hay alguna forma de implementarlo, POR FAVOR HÁGAMELO SABER.
davy.ai
Para pasar un valor a través de múltiples archivos EJS, puedes usar el objeto
locals
en la funciónrender
. Este objeto se utiliza para pasar datos desde el servidor al archivo EJS, y se puede acceder en cualquier archivo EJS incluido o padre.En el código de ejemplo dado, el valor de
usercount
se pasa deserver.js
al archivohome.ejs
usandores.render("home", { tofirstejs: usercount });
. Para pasar este valor aheader.ejs
, puedes modificar la declaracióninclude
enhome.ejs
para incluir el objetolocals
:Luego, en
header.ejs
, puedes acceder al valortolastejs
usando<%= tolastejs %>
.De manera similar, puedes pasar el valor
tolastejs
asignin.ejs
yfooter.ejs
usando el mismo método.Al hacer esto, puedes pasar valores a través de varios archivos EJS sin tener que llamar directamente al archivo EJS final.