2016-03-22 5 views
0

это код маршрутизатораМой маршрутизатор не работает, как ожидалось

Router.route('screens', { 
    path: '/screenshots/:_id', 
    template: 'screens', 
    onBeforeAction: function(){ 
    Session.set("currentRoute", "screens"); 
    Session.set("screenshots", this.params._id); 
    this.next(); 
    } 
}); 

это помощник для шаблона скриншоты

Template.screens.helpers({ 
    ss: function() { 
     var screenshots = Session.get("screenshots"); 
     return Products.findOne({ _id: screenshots}); 
    } 
}); 

и зову его здесь

<h4><a href="/screenshots/{{_id}}">Click to view the Screenshots</a> 

When я нажимаю, чтобы посмотреть URL скриншотов, URL должен быть указан /screenshots/:_id на основе конфигурации моего маршрутизатора, но то, что я вижу в t он браузер /screenshots/ без _id, и страница показывает 404 - НЕ НАЙДЕНО.

Возможно ли создание вложенных маршрутов? , потому что перед тем, как я нажму на ссылку, которая выполняет вышеуказанный маршрут. я буду в этом маршруте

Router.route('itemDetails', { 
    path: '/item/:_id', 
    template: 'itemDetails', 
    onBeforeAction: function(){ 
    Session.set("currentRoute", "itemDetails"); 
    Session.set("itemId", this.params._id); 
    this.next(); 
    } 
}); 

и этот маршрут отлично работает я могу увидеть пункт _id, можно создать еще один маршрут внутри него, что есть, например, этот путь /item/:_id/screenshots?

У меня есть _id, хранящийся в Session.get("itemId"). Можно ли так или иначе назвать это на пути маршрута?

Я попытался '/item' + '/screenshots' + '/' + Session.get("itemId"), но не работал

или есть другой способ решить эту проблему?

+0

на странице, где ссылка населен может щелкнуть правой кнопкой мыши по ссылке и проверить его, чтобы убедиться, что он на самом деле добавления {{}} _id часть? если он идет в/screenshots/напрямую, я подозреваю, что он не получает идентификатор, добавленный в ссылку, в первую очередь, так как ваш код не должен очищать идентификатор или перенаправлять вас –

+0

@PhilipPryde попробует сейчас –

+0

@PhilipPryde ничего не появляется в консоль, когда я проверяю –

ответ

1

Проблема связана не с кодом в вопросе, а с 404-страницей возникает из-за того, что он не передал идентификатор в путь, браузер говорит /screenshots/, а не /screenshots/randomId, потому что он передается только по ссылке.

В соответствии с дополнениями к вопросу и общаться с Behrouz: Поскольку значение хранится в сессии мы можем использовать

Template.registerHelper('session',function(input){ 
    return Session.get(input); 
}); 

зарегистрировать глобальный помощник шаблон под названием сессии, которая может быть вызвана с {{сессии session_var_name} } и создать ссылку, как показано ниже:

<h4><a href="/screenshots/{{session "itemId"}}">Click to view the Screenshots</a>

 Смежные вопросы

  • Нет связанных вопросов^_^