2013-08-21 8 views
5

新しいコントローラでセイルを試していますが、ビューが正しくレンダリングされません。 私のコントローラは次のようになります。私の見解は次のように見えますが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> 

しかし、私は次のエラー取得しています。makeする方法について

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でどのように定義されていますか? '/':{ビュー: 'メイン'、アクション: 'インデックス'}、これはコントローラを呼び出さずにビューをレンダリングするだけです。

ような何か試してみてください:を '/':{コントローラ: 'メイン'、アクション 'インデックス'}

よろしく

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'}] 
    }); 
関連する問題