express and jade render variable

821 views
Skip to first unread message

pit111

unread,
May 23, 2012, 10:47:25 AM5/23/12
to Express
Hi all. I writing script for sum 3 numbers from forms on index.jade
file...

app.js is:


var express = require('express');
app = express.createServer();

app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.use(express.bodyParser());
app.get('/', function(req, res){
res.render('index');
});


app.post('/', function(req, res){
var i = req.param('1', null);
var j = req.param('2', null);
var k = req.param('3', null);
var r = i+j+k;
res.render('index', {result:r});

});
app.listen(3010);


and index.jade is:

!!! 5
html
head
title Test
body
form(name='form1', method='post', action='')
label(for='1')
input#1(type='text', name='1')
label(for='2')
input#2(type='text', name='2')
label(for='3')
input#3(type='text', name='3')
input(name='submit', type='button', value='submit')
span #{result}


but I got a message " ReferenceError: C:\Users\PC\glowing-frost-5319/
views/index.jade:14
12. ' input#3(type=\'text', name='3')
'
13. ' input(name=\'submit', type='button', value='submit')
'
14. ' #result #{result}'

result is not defined
at Object.<anonymous> (eval at <anonymous> (C:\Users\PC... etc. "


What is the problem here?

tjholowaychuk

unread,
May 27, 2012, 2:24:25 PM5/27/12
to Express
res.render('index') doesn't pass { result: null } so with javascript
that's undefined, you could either pass null,
or do something like #{typeof result == 'undefined' ? '' : result}

or with express 3.x just default it to null for all templates:

app.locals.result = null
Reply all
Reply to author
Forward
0 new messages