5

使用新控制器尝试 Sails,但视图无法正确呈现。我的控制器如下所示:

/**
 * 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)

关于如何使这项工作的任何想法?

4

3 回答 3

3

尝试在问题周围加上引号

return res.view({
  "questions": [{title: 'Freddy a presidente?', content: 'Últimamente Freddy se encuentra con más diplomacia.'}]
});
于 2013-09-12T07:09:44.433 回答
0

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

我猜你的代码看起来像:'/': { view: 'main', action:'index' },但这只是渲染视图而不调用控制器。

尝试类似:'/':{控制器:'main',动作:'index'}

问候

于 2013-09-08T08:53:07.223 回答
0

Harish Reddy 似乎已经成功了。

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'}]
    });
于 2014-04-26T18:53:36.763 回答