2014-12-05 2 views
1

Я хочу, чтобы иметь возможность сопоставлять пути следующим образом: /path/anything/goes/here/and/can/be/an/arbitrarily/long/path.Утюг: маршрутизатор «globbing» не работает

Так что я попытался все следующие:

Router.route('/path/*', function(){ 
    this.render('home'); 
}); 

Я также попытался путем: '/path/:something(*)' и я также попытался указать путь во втором аргументе options объекта Router.route: {path: '/path/*', action:myActionFunction} вместе с функцией действия. Я даже попытался использовать Router.map вместо Router.route, как это предписано в обоих из следующих действий:

https://gentlenode.com/journal/meteor-11-iron-router-cheatsheet/18

http://www.manuel-schoebel.com/blog/iron-router-tutorial

Но все же, подходя к /path/anything/goes/here не работает. Он берет меня гладить по умолчанию: маршрутизатор страницы ошибок:

К сожалению, похоже, что нет ни одного маршрута на клиенте или на сервере для URL: «HTTP ... локальный : 1710 .../path/this/should/work/согласно/to/the/above/links. "

Любой помощь ценится, спасибо.

ответ

2

Попробуйте

'/(.*)'

или

'/path/(.*)'

если URL действительно domain.com/path/

служу маршруты из '/(.*)' путем поиска по коллекции документов из этого.params

Если вам нужны какие-либо маршруты до того, как вы поймаете весь маршрут в Meteor.startup, и у вас есть мелкозернистые определенные маршруты до вашей стороны на стороне клиента вашего маршрутизатора.

Надеюсь, это вам поможет.

+0

Я вижу, что вы там делали! Я немного изменил ваше решение, чтобы соответствовать моей ситуации. Это действительно странно, потому что каждый проверенный мной ресурс пропускает десятичную точку. Затем я понял, что только что превратился в регулярное выражение ... Я использовал: ''/path/([_]? [A-zA-Z0-9] *) * '' , так как я только хотел совпадения alnums (и необязательный лидирующий знак подчеркивания) Спасибо, ты помог мне собрать! – Clover

+0

вы уверены в своем втором заявлении? Если catchall находится в запуске, разве он не поймает все, прежде чем они получат возможность увидеть мелкозернистые маршруты? Я думал, что Meteor.startup запущен до router.js? – Clover

+0

@Clover Нет. Я не уверен в отношении второго заявления. Я знаю, что когда мой маршрут glob (или необязательный) не был в запуске, он запускался до маршрутов в пакетах.tmeasday предложил разместить блог/дополнительный маршрут в процессе запуска, чтобы предотвратить это поведение. См. Этот вопрос #: https://github.com/EventedMind/iron-router/issues/1007 –

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