自定义视图/操作/控制器在Sails JS中不起作用

时间:2013-11-09 20:34:08

标签: node.js sails.js

我一定做错了,但是我看不到......基本上如果我通过sails generate controller products和文件/controllers/ProductsController创建一个控制器/模型,我会在索引操作中添加一些变量如:

index: function(req, res) {

    return res.view({
        myOne: 'World?',
        myvar: 'hello???',
        title: 'Yeap'
    })

},

当我检查localhost:1337 / products时,变量确实在模板中打印出来。请注意,我没有添加自定义视图,我的模板文件位于views/products/index.jade(我使用的是Jade而不是EJS)。但是,如果我在/config/routes中创建自定义视图,例如:

'/custom': {

    view: 'custom',
    controller: 'ProductsController',
    action: 'customAction'

}

在我的ProductsController中,我有一个与前面描述的非常相似的行为:

customAction: function(req, res) {

    return res.view({
        myOne: 'Hello?',
        myvar: 'World???',
        title: 'Yeap'
    })

},

我的模板中没有打印变量。该模板被称为正常,所以是控制器和动作(所以它似乎)。谁能解释我做错了什么?

1 个答案:

答案 0 :(得分:8)

如果您想通过以下方式访问该视图,则可以选择将视图命名为与您的操作customAction.jade相同的名称:

index: function(req, res) {

  return res.view({
    myOne: 'World?',
    myvar: 'hello???',
    title: 'Yeap'
  })

},

或者您可以使用以下语法访问相同的视图/模板(例如index.jade):

customAction: function(req, res) {

  return res.view('products/index', {
    myOne: 'World?',
    myvar: 'hello???',
    title: 'Yeap'
  })

},

我有一个使用ejs here的工作回购。