2015-03-01 6 views
0

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

Я использую железный маршрутизатор, и когда я посмотрел в документации, которую я нашел этот пример

Router.route('/post/:_id', function() { 
    this.render('Post', { 
    data: function() { 
     return Posts.findOne({_id: this.params._id}); 
    } 
    }); 
}); 

Я пытался что-то подобное, но я изо всех сил, чтобы найти, как я на самом деле использовать это свойство данных в шаблоне. Раньше я использовал помощник шаблона для поиска на db, который работал отлично, пока его всегда та же команда find. Теперь, когда я хочу настроить эту находку в зависимости от того, через что я проходил через адресную строку, я изо всех сил пытаюсь это сделать.

Используя пример маршрутизатора Железный выше я попытался что-то вроде этого

Router.route('fruit/:_colour', function() { 
    this.render('fruitTemplate', { 
    data: function() { 
     return FruidDb.find({colour: this.params._colour}); 
    } 
    }); 
}); 

Это где я застрял. Обычно для заполнения моего шаблона я хотел бы использовать помощник, как показано ниже

Template.fruitTemplate.helpers({ 
    fruitByColour: function() { 
     return FruidDb.find({colour: "green"); 
    } 
}); 

затем просто Foreach через каждый fruitByColour

Но теперь, когда я «динамически» получать эти данные, я не знаю, как получить данные, которые возвращаются из маршрута в помощник.

Возможно, я делаю это совершенно неправильно. Если есть лучший способ просто передать параметр помощнику и сделать db.find оттуда, что, вероятно, было бы лучше, но мне было трудно увидеть лучший способ сделать это, и было бы очень полезно получить любую помощь.

ответ

0

Я нашел ответ благодаря какой-то код, который я нашел на этот вопрос Meteor Iron Router : Passing data between routes

в принципе мне не нужно, чтобы определить отдельный помощник, я могу просто пройти те же данные, как и я в помощнике так же, как это.

Router.route('fruit/:_colour', function() { 
    this.render('fruitTemplate', { 
    data: { 
     fruitByColour: function() { 
     return FruitDb.find({colour: this.params._colour}); 
     } 
    } 
    }); 
}); 
Смежные вопросы