2012-12-10 8 views
11

che sto avendo qualche difficoltà a decifrare l'ambiguità traQual è l'uso corretto di res.render() e res.redirect() in Express?

res.render('viewname', {msg: 'Message' }) 

e

res.redirect('route') 

La funzione di reindirizzamento non consente di passare un "messaggio", ma si può ancora voglia di, e il render la funzione renderà la tua vista, ma non cambierà l'URL della tua app web e non attiverà la funzione richiesta per il tuo percorso.

La situazione che sto avendo è che ho una forma Invita, che ha un azione che cambia il mio URL, e attiva una funzione in quel percorso che ha un successo e il fallimento di callback, e vorrei per reindirizzare gli utenti al Dashboard con un messaggio che indica il successo o l'insuccesso.

+2

da quello che si sta descrivendo si dovrebbe avere un POST e un GET definiti. nella richiesta POST vuoi reindirizzare al tuo GET e nel GET che vuoi rendere. – c0deNinja

risposta

18

guardare connect-flash per utilizzare lo stile delle barre dei messaggi lampeggianti.

res.render() renderà la vista con i dati passati ad esso, res.redirect() sarà reindirizzare un utente a un'altra pagina (a questo punto la richiesta ricomincia)

+1

Fantastico - grazie. Questa non è la prima volta che qualcosa è stato rimosso da Express che è stato fantastico - non so perché continuano a prendere le cose, come il mem flash e EJS parziali – netpoetica

+1

penso che se un'altra libreria fornisce funzionalità, la rimuovono. Concordo principalmente con questa logica, tranne che può essere frustrante quando rimuovono le cose dalle quali si dipende. Io uso ejs-locals per ottenere layout/blocchi/parziali indietro. – chovy

+1

Cosa succede se desidero reindirizzare e inviare dati contemporaneamente ??? – stylishCoder

Problemi correlati