2015-05-20 3 views
0

Что-то вроде элементарного не работает должным образом для меня. Я просто пытаюсь показать список объявлений на панели инструментов, но мой помощник, похоже, не извлекает данные из публикации. Мои файлы ниже.Метеорные помощники, не работающие в каждой петле

publications.js

Meteor.publish('announcements', function() { 
    return Announcements.find(); 
}); 

Template JS (dashboard.js):

Template.sendersDashboard.helpers({ 
    announcements: function() { 
     return Announcements.find({}, {sort: {createdAt: -1}}); 
    } 
}) 

Просмотр JS (dashboard.html):

<template name="dashboard_announcements"> 
    {{#each announcements}} 
     {{> single_announcement}} 
    {{else}} 
     There are no Announcements to display. 
     <br> 
     <h5><a href="{{pathFor 'newAnnouncement'}}">Why don't you make one now?</a></h5> 
    {{/each}} 
</template> 

При просмотре страницы в в браузере я вижу только случай {{else}}. Я проверил базу данных и увидел доступные записи. Кроме того, я вообще не получаю ошибок в отношении вызовов.

Любая помощь, предложения и т. Д. Очень ценится.

+0

ли вы подписываться правильно? Попробуйте Announcements.find(). Fetch() в консоли и посмотрите, вернул ли он пустой массив – Sindis

+0

Спасибо @Sindis. Похоже, я не правильно понял. Через lehtu ниже, мне не хватало подписки. – imarichardson

ответ

2

Как и в случае с Синдисом, у вас может отсутствовать подписка в вашем dashboard.js.

Meteor.subscribe('announcements'); 

Или еще может быть, что у вас есть помощник в неправильном шаблоне. Вместо того, чтобы:

Template.sendersDashboard.helpers({... 

Вы должны иметь:

Template.dashboard_announcements.helpers({... 
+0

Спасибо @lehtu. Я потерял свою подписку в контроллере. Вы правильно относитесь к разному имени шаблонов, но это потому, что учетные записи dashboard_nouncements вложены в панель sendersDashboard. Большое спасибо. – imarichardson

+0

Я думал, что у вас может быть что-то подобное, но вы никогда не сможете узнать здесь :) Рад помочь вам! – lehtu

0

У вас есть другое имя шаблона в ваших JS и HTML:

Ваше имя шаблона в JS является sendersDashboard:

Template.sendersDashboard.helpers({ 
    //code 
}); 

И ваше имя шаблона в HTML dashboard_announcements:

<template name="dashboard_announcements"> 
    <!-- code --> 
</template> 

Я рекомендую использовать имена верблюжьих шаблонов, поэтому исправить имя HTML:

<template name="sendersDashboard"> 
    <!-- code --> 
</template> 
+0

Спасибо, тоже. Я тоже изменился на camelCase. Слишком большая часть рубинового мира все еще застряла у меня в голове. – imarichardson