2015-04-03 66 views
1

我有一個index.ejs爲我的主頁呈現<%- partial ('../user/new.ejs') %>我的註冊頁面。在添加閃存錯誤消息的過程中,我注意到部分無法訪問本地人[閃存未定義錯誤]。同時,如果我加載部分的視圖(通過訪問root/user/new直接對快閃消息被正確執行部分會在帆中訪問當地人嗎?爲什麼不?

有人能解釋這是爲什麼,並且沒有任何變通

可能原因:?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> 

回答

2

的部分一定要訪問任何當地人,你渲染視圖時發下來,所以它看起來像別的東西可能是怎麼回事。無論如何,你可以通過手動將變量傳遞給第二個參數:

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

這沒有奏效,我仍然從'index.ejs'獲得'flash undefined'。我的下一個猜測是當地人沒有完全從'userController'傳遞。難道是因爲我在分配'req.session.flash'而不是'res.view'後重定向到root? – 2015-04-03 19:54:50

+0

我已將我的代碼添加到原始問題中。 – 2015-04-03 19:59:28

相關問題