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(EJS ではなく Jade を使用しています)。ただし、次のようなカスタムビューを作成する/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 hereを使用した作業レポがあります。

于 2013-11-19T19:29:43.490 に答える