Neha Sharma
Neha Sharma

Reputation: 772

Why my ejs is not rendering on redirecting?

I have made a form.On successful submission of the form I wanted to redirect my page to thankyou page(another ejs) view. Somehow if I am using res.redirect() it is not working but on using res.send('Thank you') it is working fine.

Below is the code of my app.js:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var routes = require('./routes/index');
var users = require('./routes/users');
var thankyou = require('./routes/thankyou');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
var engine = require('ejs-locals');
app.engine('ejs', engine);
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

mongoose.connect('mongodb://localhost/my-data');

app.use('/', routes);
app.use('/users', users);
app.use('/thankyou', thankyou);

var Schema = new mongoose.Schema({
    name      : String,
    email     : String
});

var user = mongoose.model('Users', Schema);


app.post('/test',function(req,res){
  new user({
      email : req.body.email,
      name : req.body.name
  }).save(function(err, doc){
    if(err){
      console.log('boo');
    }
    else{
      console.log('innner');
      res.redirect("/thankyou");
       res.end();

    }
  })
})

thankyou route:

var express = require('express');
var router = express.Router();
router.get('/thankyou', function(req, res) {
 res.render('thankyou');
});

module.exports = router;

thankyou view

<h2>THANKS/h2>

Upvotes: 1

Views: 196

Answers (1)

robertklep
robertklep

Reputation: 203251

This:

app.use('/thankyou', thankyou);

...combined with this:

router.get('/thankyou', ...);

...creates a route that matches /thankyou/thankyou.

Instead, you probably want this:

router.get('/', ...);

Upvotes: 2

Related Questions