2013-08-21 71 views
5

嘗試使用新控制器的Sails,但視圖無法正確呈現。 我的控制器看起來是這樣的:Sails.js - 控制器呈現視圖,但集合未定義

/** 
* QuestionController 
* 
* @module  :: Controller 
* @description :: Contains logic for handling requests. 
*/ 

module.exports = { 

    /* e.g. 
    sayHello: function (req, res) { 
    res.send('hello world!'); 
    } 
    */ 
    index: function (req, res) { 
    return res.view({ 
     questions: [{title: 'Freddy a presidente?', content: 'Últimamente Freddy se encuentra con más diplomacia.'}] 
    }); 
    } 


}; 

雖然我的看法是這樣的:

<h1>Preguntas</h1> 
<ul> 
    <% _.each(questions, function(question) { %> 
    <li><%= question.title %></li> 
    <% }) %> 
</ul> 

但我發現了以下錯誤:

ReferenceError: /home/alainus/dev/parlamenta/parlamenta/views/question/index.ejs:3 
    1| <h1>Preguntas</h1> 
    2| <ul> 
>> 3| <% _.each(questions, function(question) { %> 
    4| <li><%= question.title %></li> 
    5| <% }) %> 
    6| </ul> 

questions is not defined 
    at eval (eval at <anonymous> (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/ejs/lib/ejs.js:236:14), <anonymous>:29:68) 
    at eval (eval at <anonymous> (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/ejs/lib/ejs.js:236:14), <anonymous>:29:228) 
    at /home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/ejs/lib/ejs.js:249:15 
    at Object.exports.render (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/ejs/lib/ejs.js:287:13) 
    at Object.exports.renderFile (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/ejs/lib/ejs.js:317:20) 
    at View.module.exports [as engine] (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/ejs-locals/index.js:85:7) 
    at View.render (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/express/lib/view.js:76:8) 
    at Function.app.render (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/express/lib/application.js:506:10) 
    at ServerResponse.res.render (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/node_modules/express/lib/response.js:756:7) 
    at renderView (/home/alainus/dev/parlamenta/parlamenta/node_modules/sails/lib/hooks/views/index.js:298:20) 
    at /home/alainus/dev/parlamenta/parlamenta/node_modules/sails/lib/hooks/views/index.js:280:20 
    at Object.oncomplete (fs.js:107:15) 

如何使任何想法這項工作?

+0

它應該工作。也許你以某種方式呈現視圖省略控制器?嘗試編寫'console.log('我在內部索引操作!');'在你的索引操作函數的開頭。你能看到控制檯中的消息嗎? – ataman

回答

0

你的路由在config \ routes.js中是如何定義的?

我想你的代碼看起來像:'/':{view:'main',action:'index'},但這只是渲染視圖而不調用控制器。

嘗試是這樣的:'/':{控制器: '主',行動: '索引'}

問候

3

嘗試把周圍的問題引號

return res.view({ 
    "questions": [{title: 'Freddy a presidente?', content: 'Últimamente Freddy se encuentra con más diplomacia.'}] 
}); 
0

哈里什·雷迪似乎已經釘上了它。

的SailsJs文檔顯示視圖變量的不帶引號的例子:

return res.view({ 
     corndogs: [{name: 'Hank the Corndog'}, {name: 'Lenny the Corndog'}] 
    }); 

...但是,這並不爲我工作。我不知道爲什麼。如果我引用它的工作變量名稱。

return res.view({ 
     "corndogs": [{name: 'Hank the Corndog'}, {name: 'Lenny the Corndog'}] 
    }); 
相關問題