2013-08-21 7 views
5

Provare Vele con un nuovo controller, ma la vista non viene visualizzata correttamente. mio regolatore di simile a questa:Sails.js - Il controller è vista di rendering ma la collezione non è definita

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


}; 

Mentre mio punto di vista è simile al seguente:

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

Ma sto ottenendo il seguente errore:

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) 

Tutte le idee su come fare questo lavoro?

+0

Dovrebbe funzionare. Forse in qualche modo rendi la visualizzazione omettendo il controller? Prova a scrivere 'console.log ('I'm inside index action!');' All'inizio della funzione di azione dell'indice. Riesci a vedere il messaggio nella console? – ataman

risposta

0

Come viene definito il percorso in config \ routes.js?

Immagino che il tuo codice assomiglia a: '/': {view: 'main', action: 'index'}, ma questo rende solo la vista senza chiamare il controller.

Prova qualcosa di simile: '/': {controllore: 'main', l'azione: 'indice'}

saluti

3

cercano di mettere le virgolette attorno domande

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

Harish Reddy sembra averlo inchiodato.

La documentazione SailsJs mostra un esempio di variabili vista senza virgolette:

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

... ma questo non funziona per me. Non sono sicuro del perché. Se cito il nome della variabile funziona.

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