.render doesn't pass parameters to next page

Viewed 48

I sadly try for days to pass some parameters throught one page, I cant find a solution to solve my problem.

I also tried toadd res.locals = { users: results } , changing .ejs variable name then render, same result ; I tried with a string : res.render('./Utilisateurs/utilisateurs', { test: "test" } same result ...;

This page always send this error :


ReferenceError: F:\DEV\devNodeJs\skote\Admin\views\Utilisateurs\utilisateurs.ejs:16
    14|                 <div class="page-title-box d-sm-flex align-items-center justify-content-between">

    15|                     <h4 class="mb-sm-0 font-size-18">

 >> 16|                         <%= test %>Data Tables</h4>

    17| 

    18|                     <div class="page-title-right">

    19|                         <ol class="breadcrumb m-0">


test is not defined
    at eval ("F:\\DEV\\devNodeJs\\skote\\Admin\\views\\Utilisateurs\\utilisateurs.ejs":16:26)
    at utilisateurs (F:\DEV\devNodeJs\skote\Admin\node_modules\ejs\lib\ejs.js:692:17)
    at tryHandleCache (F:\DEV\devNodeJs\skote\Admin\node_modules\ejs\lib\ejs.js:272:36)
    at View.exports.renderFile [as engine] (F:\DEV\devNodeJs\skote\Admin\node_modules\ejs\lib\ejs.js:489:10)
    at View.render (F:\DEV\devNodeJs\skote\Admin\node_modules\express\lib\view.js:135:8)
    at tryRender (F:\DEV\devNodeJs\skote\Admin\node_modules\express\lib\application.js:640:10)
    at Function.render (F:\DEV\devNodeJs\skote\Admin\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (F:\DEV\devNodeJs\skote\Admin\node_modules\express\lib\response.js:1012:7)
    at ServerResponse.res.render (F:\DEV\devNodeJs\skote\Admin\node_modules\express-ejs-layouts\lib\express-layouts.js:77:18)
    at F:\DEV\devNodeJs\skote\Admin\routers\route.js:22:13

Here I have my controller function :

app.get('/utilisateurs', urlencodeParser, function(req, res, next) {
    con.connect(function(err) {
        console.log("Utilisateurs");
        var result = new Array();
        con.query("Select * from users", function(err, _users) {

            _users.forEach(function(user) {
                var u = new Object();
                u["username"] = user["username"];
                u["password"] = user["password"];
                u["email"] = user["email"];
                result.push(u);
            });
            res.locals = { users: JSON.stringify(result) }; 
            // if any error while executing above query, throw error
            res.render('./Utilisateurs/utilisateurs', { results: result }, function(err) {
                console.log(err);
            });
            next();
        });
    });
});

Here my .ejs file :

        <div class="row">
            <div class="col-12">
                <div class="page-title-box d-sm-flex align-items-center justify-content-between">
                    <h4 class="mb-sm-0 font-size-18">
                        {{ test}}Data Tables</h4>

                    <div class="page-title-right">
                        <ol class="breadcrumb m-0">
                            <li class="breadcrumb-item"><a href="javascript: void(0);">Tables</a></li>
                            <li class="breadcrumb-item active">Data Tables</li>
                        </ol>
                    </div>

                </div>
            </div>
        </div>

Here my main (index.js) :

var app = require('express')();
var express = require('express');
var path = require('path');
var http = require('http').Server(app);
var toastr = require('express-toastr');
// import controller
var AuthController = require('./controllers/AuthController');
var UserControler = require('./controllers/UtilisateurController');

// import Router file
var pageRouter = require('./routers/route');

var session = require('express-session');

var bodyParser = require('body-parser');
var flash = require('connect-flash');
var i18n = require("i18n-express");
app.use(bodyParser.json());
var urlencodeParser = bodyParser.urlencoded({ extended: true });

app.use(session({
    key: 'user_sid',
    secret: 'somerandonstuffs',
    resave: false,
    saveUninitialized: false,
    cookie: {
        expires: 1200000
    }
}));

app.use(session({ resave: false, saveUninitialized: true, secret: 'nodedemo' }));
app.use(flash());
app.use(toastr());
app.use(i18n({
    translationsPath: path.join(__dirname, 'i18n'), // <--- use here. Specify translations files path.
    siteLangs: ["es", "en", "de", "ru", "it"],
    textsVarName: 'translation'
}));


app.use('/public', express.static('public'));

app.get('/layouts/', function(req, res) {
    res.render('view');
});

// apply controller
AuthController(app);
UserControler(app);

//For set layouts of html view
var expressLayouts = require('express-ejs-layouts');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(expressLayouts);

// Define All Route 
pageRouter(app);

app.all('*', function(req, res) {
    res.locals = { title: 'Error 404' };
    res.render('pages/pages-404', { layout: false });
});

http.listen(8000, function() {
    console.log('listening on *:8000');
});
0 Answers
Related