ExpressJS 3.0 Comment passer res.les habitants de jade vue?

Je veux afficher un message flash après qu'un utilisateur ne parvient pas à signer, mais j'ai juste ne peux pas obtenir les variables à afficher dans ma Jade points de vue.

J'ai quelques morceaux, je sais que je dois l'utiliser dans mon application.configurer():

    app.use (req, res, next) ->
      res.locals.session = req.session

Et je vais définir ce que le message flash est après les MESSAGES de l'utilisateur le mot de passe erroné:

     exports.postSession = (req, res) ->
       users = require '../DB/users'
       users.authenticate(req.body.login, req.body.password, (user) ->
       if(user)
         req.session.user = user
         res.redirect(req.body.redirect || '/')
       else
         req.session.flash = 'Authentication Failure!'
         res.render('sessions/new', {title:'New', redirect: req.body.redirect })
      )

Je ne sais pas comment accéder à res.locals.session dans ma Jade fichier. Je doute que je suis en train de tout droit. Cette question est un lot comme celui-ci: La migration Express.js 2 à 3, en particulier de l'app.dynamicHelpers() app.les locaux.utilisez? mais je ne peux toujours pas le faire fonctionner. Il serait apprécié si quelqu'un pourrait me montrer un exemple simple de mettre des valeurs dans res.local et d'accéder à une vue.

p.s. Je ne sais à propos de connectez-flash, mais j'ai besoin de comprendre comment faire des choses disponibles dans les vues.

C'est mon app:

app.configure(() -> 
  app.set('views', __dirname + '/views')
  app.set('view engine', 'jade')
  app.use(express.bodyParser())
  app.engine('.jade', require('jade').__express)
  app.use(express.methodOverride())
  app.use(express.cookieParser())
  app.use(express.session({ store: new express.session.MemoryStore({reapInterval: 50000 * 10}), secret: 'chubby bunny' }))
  app.use(express.static(__dirname + '/public'))
  app.use((req, res, next) ->
    res.locals.session = req.session
    next()
  )
  app.use(app.router)
)
  • p.p.s Aussi où la documentation est-elle pour cela? J'ai été à la recherche dans le guide de Migration, la Express site et se Connecter site pourtant, je ne peux toujours pas comprendre... Peut-être c'est juste moi, mais j'ai l'impression que je suis mal à apprendre ExpressJS parce que sa documentation est si rare.
  • vous ne pouvez pas y accéder comme session.flash?
  • Quand je fais cela en jade: - if(session.flash) il me donne une erreur qui dit que la session n'est pas définie.. Mais il n'y a rien sur la façon dont j'ai mis les choses ci-dessus?
  • est votre application.utilisation sur app.routeur ou de l'application[VERBE]?
  • je ne sais pas la distinction entre application.utilisation sur app.routeur ou de l'application[VERBE]. Dans ma tête sa pour le routeur comme dans ces états dans l'application.utiliser sont évalués par rapport à l'immédiate de l'état du serveur avant qu'une demande est routée... je ne sais pas quelle application.l'utilisation des moyens dans le cadre de l'application[VERBE].
  • app[VERBE] est quoi comme app.obtenez de l'application.post. ce sont toutes les routes à l'intérieur de l'app.utilisation(app.routeur), qui devrait être après que tous les autres app.use à l'exception de toute gestionnaires d'erreur. quel ordre sont vous de les mettre dans?
  • Ah Ok, mon application.utilisation(app.routeur) est définitivement après mon app.use (req, res, next) -> res.locals.session = req.session. Donc au-delà de la commande de mon application.usage() les déclarations, c'est fondamentalement la façon de créer de la res.les variables locales? Aussi, j'essaye d'accéder à ces incendies.les variables locales dans mon fichier de mise en page. je ne pense pas que ce soit le problème, mais il des restrictions sur les vues qui ont accès à vos res.les habitants??
  • n'y sont pas. pouvez-vous publier votre app?
  • OK j'ai posté mon application. app.utilisation(app.routeur) est en dessous de tous les middleware consolidés.
  • supprimer app.engine. voir ce qui se passe. vous n'en avez pas besoin car vous l'avez déjà fait app.set('view engine', 'jade')
  • Hey Jonathan. Merci pour vos réponses, j'ai réussi à résoudre mon problème car j'ai réalisé que je faisais de redirection comme ceci: res.redirect('sessions/new',{title: 'New'}) je ne suis même pas sûr de pourquoi ça a apporté de la page mais res.redirection est censé être utilisé comme ceci maintenant: res.redirect([code,] url) de toute façon, erreur stupide de ma part, merci encore pour votre attention.
  • lol ce n'était pas dans votre code. et oui une redirection devrait jamais avoir un objet.

InformationsquelleAutor aeyang | 2012-09-23