Метеор: нет маршрута для ошибки пути. как получить доступ к ОДНОЙ статье внутри вложенного объекта

У меня есть массив из 10 объектов «категорий», и каждая категория имеет подобъекты, такие как сообщения в этой категории. Вот как это выглядит.

введите здесь описание изображения

Я получаю доступ к списку категорий, как это.

<template name="CategoriesMain">
  {{#each articles}}
    <li>
      <a href="/unfiltered/{{_id}}"><h2>{{name}}</h2></a>
    </li>
  {{/each}}
</ul>
</template>

эта ссылка

<a href="/unfiltered/{{_id}}"><h2>{{name}}</h2></a>

получает доступ к списку «сообщений» в категории, который выглядит следующим образом

<template name="CategoriesSingle">

<h1>This is a test</h1>
<ul>
  {{#each articles}}
  {{#each posts}}
    <li>
      <a href="/catsingle/{{_id}}"><h2>{{title}}</h2></a>
    </li>
    {{/each}}
  {{/each}}
</ul>
</template>

эта ссылка должна быть направлена ​​на ОДИН ПОСТ из списка сообщений в категории

<a href="/catsingle/{{_id}}"><h2>{{title}}</h2></a>

ПРОБЛЕМА:

Я получаю сообщение об ошибке: нет маршрута для пути: /catsingle/, когда я пытаюсь получить доступ к SINGLE POST

хотя у меня это есть в моих route.js, как это

FlowRouter.route('/catsingle/:_id', {
    name: 'catsingle',
    action() {
        BlazeLayout.render("AppLayout", {main: "CategoryArticleSingle"});
    }
});

помощник шаблона выглядит так

  Template.CategoryArticleSingle.helpers({
      articles: function () {
        var id = FlowRouter.getParam('_id')
        return CategoryCollection.findOne({_id: id});
      }
    });

Как я могу успешно разместить один пост в категории?


person Shingai Munyuki    schedule 18.06.2016    source источник


Ответы (1)


В вашем массиве posts нет ключа _id, у него есть ключ ID.

Пытаться:

<a href="/catsingle/{{ID}}"><h2>{{title}}</h2></a>
person Michel Floyd    schedule 19.06.2016
comment
Я сделал это, маршрут работает нормально, он идет к шаблону в порядке, но я не могу заставить {{title}} что-либо выводить, хуже того, нет ошибок. @МишельФлойд - person Shingai Munyuki; 19.06.2016
comment
я отчетливо вижу сообщения в console.log, но почему-то могу получить их в шаблоне - person Shingai Munyuki; 19.06.2016
comment
(1) Убедитесь, что CategoryCollection.findOne({_id: id}) действительно что-то возвращает. (2) Если вы просматриваете только один документ, вам нужен {{#with articles}} вместо {{#each articles}}, потому что последний ожидает курсор (то есть результат .find()) вместо одного документа (.findOne()) - person Michel Floyd; 19.06.2016
comment
да, вы правы, он ничего не возвращал, я обнаружил, что мне нужно перебрать массив, чтобы добраться до нужного мне объекта, поэтому я использовал подчеркивание findWhere. он хорошо работает в консоли, но когда я попробую это в своем приложении, это не сработает. Я разместил вопрос со всем кодом, который я использовал здесь stackoverflow.com/questions/37931938/ пожалуйста, посмотрите, если вы можете. ваша помощь всегда приветствуется. @МишельФлойд - person Shingai Munyuki; 21.06.2016