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

时间:2015-04-03 16:32:52

标签: node.js model-view-controller sails.js

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

有人可以解释为什么会这样,是否有任何解决方法?

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

控制器:

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') %>

_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> 

1 个答案:

答案 0 :(得分:2)

部分应该可以访问您在渲染视图时发送的任何本地人,所以看起来其他东西可能会在这里发生。无论如何,您可以通过将它们作为第二个参数发送来手动将变量传递给部分:

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