Reputation: 1568
For some reason I can't pass a variable to the pug template with Node JS.
app.get("/", function (req, res) {
res.render('index', { hello : 'Hey'} )
})
....
extends layout.pug
block content
h1 #{hello} guy
This just returns "guy" in the index.html file
Upvotes: 26
Views: 55002
Reputation: 3849
I think you are using JADE coding (#{hello}) with "pug"(updated jade) plugin with static .html -- completely wrong.
Follow the lines below:
app.set('views', __dirname + '/public/views');
app.set('view engine', 'pug');
app.get('/', function (req, res) {
res.render('index', { title: 'Hey', message: 'Hello there!'});
});
html
head
title= title
body
h1= message
Upvotes: 23
Reputation: 151
Try this.. works for me.
nodejs part / index.js
const router = require('express').Router();
router.get('/', (req, res, next) => {
const testObj = {hello: 'Hey'};
res.render('index', { testObj: JSON.stringify(testObj) });
});
pug/jade part / (index.pug)
script.
var testObj = !{testObj};
i'm using pug version: 2.0.3
Upvotes: 15