部分可以访问当地人在帆? 为什么不?

我有一个index.ejs为我的主页呈现我的注册页面的<%- partial ('../user/new.ejs') %> index.ejs <%- partial ('../user/new.ejs') %> 。 在添加Flash错误消息的过程中,我注意到部分不能访问本地[flash undefined error] 。 同时,如果我加载部分作为一个视图(通过访问root/user/new直接然后闪光消息正确执行。

有人可以解释为什么这是,有什么解决?

可能的原因: index.ejs通过res.redirect加载,同时通过res.redirect加载专用的注册视图?

控制器:

 create: function (req, res, next) { User.create({ email: req.param('email'), encryptedPassword: req.param('password') }, function userCreated(err, user) { if (err) { console.log(err); req.session.flash = { err: err.ValidationError } return res.redirect('/'); } res.redirect('/user/show/'+ user.id); //res.json(user); }); }, 

现在index.ejs只是<%- partial ('../user/_signup.ejs') %> ../user/_signup.ejs <%- partial ('../user/_signup.ejs') %>

_signup.ejs

 <div class="col-sm-12 col-md-12 col-lg-12" style="max-width:400px;"> <h1>Sign up</h1> <form action="/user/create" method="post" role="form" class="form-signin"> <% if(flash && flash.err) { %> <ul class="alert alert-success"> <% Object.keys(flash.err).forEach(function(err) { %> <li> <%- JSON.stringify(flash.err[err]) %></li> <% }) %> </ul> <% } %> <div class="form-group control-group"> <label for="email"></label> <input name="email" class="form-control" placeholder="Email" type="text"/> </div> <div class="form-group control-group"> <label for="password"></label> <input name="password" class="form-control" placeholder="Password" id="password" type="password" title="Password"/> </div> <div class="form-group control-group"> <label for="passwordConfirmation"></label> <input name="passwordConfirmation" class="form-control" placeholder="Confirm Password" type="password" title="Password"/> </div> <input type="submit" value="Signup" class="btn btn-success"/> <input type="hidden" name="_csrf" value="<%= _csrf %>"/> </form> 

局部应该可以访问渲染视图时发送的任何本地人,所以看起来好像还有其他的东西在这里。 无论如何,你可以通过发送他们作为第二个参数手动传递variables的部分:

 <%- partial ('../user/new.ejs', {flash: flash}) %>