6

我一定做错了什么,但我看不到......基本上,如果我通过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'
    })

},

变量未打印在我的模板中。模板被调用好了,控制器和动作也是如此(看起来如此)。谁能解释我做错了什么?

4

1 回答 1

9

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 的工作仓库。

于 2013-11-19T19:29:43.490 回答