2013-08-21 12 views
5

Próbuje żagli za pomocą nowego kontrolera, ale widok nie jest wyświetlany poprawnie. Mój kontroler wygląda następująco:Sails.js - Kontroler renderuje widok, ale kolekcja jest niezdefiniowana.

/** 
* 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.'}] 
    }); 
    } 


}; 

Chociaż moim zdaniem wygląda następująco:

<h1>Preguntas</h1> 
<ul> 
    <% _.each(questions, function(question) { %> 
    <li><%= question.title %></li> 
    <% }) %> 
</ul> 

Ale ja otrzymuję następujący błąd:

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) 

jakieś pomysły jak zrobić ta praca?

+0

Powinien działać. Może w jakiś sposób renderujesz widok, pomijając kontroler? Spróbuj napisać 'console.log (" Jestem w akcji indeksowej! ");' Na początku twojej akcji indeksowej. Czy widzisz komunikat na konsoli? – ataman

Odpowiedz

0

Jak jest określona trasa w config \ routes.js?

Przypuszczam, że Twój kod wygląda następująco: '/': {view: 'main', akcja: 'index'}, ale to po prostu renderuje widok bez wywoływania kontrolera.

Spróbuj czegoś takiego: '/': {Kontroler: 'głównym', działanie: 'index'}

Pozdrowienia

3

spróbuj umieścić cudzysłów wokół pytań

return res.view({ 
    "questions": [{title: 'Freddy a presidente?', content: 'Últimamente Freddy se encuentra con más diplomacia.'}] 
}); 
0

Harish Reddy wydaje się, że to przybili.

Dokumentacja SailsJs pokazuje przykład widzenia zmienne bez cudzysłowów:

return res.view({ 
     corndogs: [{name: 'Hank the Corndog'}, {name: 'Lenny the Corndog'}] 
    }); 

... ale to nie działa dla mnie. Nie jestem pewien dlaczego. Jeśli zacytuję nazwę zmiennej, to działa.

return res.view({ 
     "corndogs": [{name: 'Hank the Corndog'}, {name: 'Lenny the Corndog'}] 
    }); 
Powiązane problemy