2013-08-15 17 views
11

Ho una vista parziale che contiene il mio modulo di accesso. Mi piacerebbe renderlo da una chiamata Ajax al mio controller.Sails.js - Come eseguire il rendering parziale da un controller?

Questo è il campione in cui vorrei tornare la mia visione parziale:

postlogin: function (req,res) { 

    var username = req.param('username'); 
    var password = req.param('password'); 

    User.find({ 
     username: username, 
     password: password.salt() 
    }).done(function(err, users){ 
     if(users.length == 1){ 
      // Here I want to return a partial view, not a view 
      res.view('home/login', {message: 'Login success!'}); 
     }else{ 
      // Here I want to return a partial view, not a view 
      res.view('home/login', {message: 'Login failed!'}); 
     } 
    }); 
    }, 

risposta

20

Ah! Trovato!

Se il vostro punto di vista è una vista parziale, è sufficiente specificare layout: null:

res.view('home/login', {message: 'Login failed!', layout: null}); 
+3

Yep! E se vuoi disabilitare il layout a livello globale (facendo le cose con il metodo partial-ish Express-3-ish) puoi impostare 'layout: false' nel tuo file' config/views.js'. – mikermcneil

5

In fondo alla pagina: http://sailsjs.org/#!documentation/views

Cosa succede ad usare più layout?

Express 3 supporto nativo rimosso per i layout. In Sails, siamo riusciti a mantenere questo aspetto, ma non supportiamo ufficialmente più layout. Detto questo, almeno in EJS, invece di indicare il layout personalizzato con il layout locale, è necessario utilizzare _layoutFile:

/** 
* HomeController 
*/ 
module.exports = { 

    index: function (req, res) { 
     res.view({ 
      _layoutFile: '../layouts/other.ejs' 
     }); 
    }, 

}; 

Sails v0.9.7