流星:铁路线不对路

Meteor: Iron route not to the right route

所以我有一个导航栏,我已经进入了 "Games" 中一个名为 "Cross" 的子目录,所以,/games/cross。现在从那个页面,我试图从导航栏再次访问游戏页面,但它显示 /games/games... 我该如何解决这个问题?我有以下...

Router.configure({
    layoutTemplate: 'layoutDefault'
});

Router.route('/', function(){
    this.render('main');
});

Router.route('/contact', {
    template: 'contact'
});

Router.route('/games', {
    template: 'games'
});

Router.route('/games/cross', {
    action: function() {
        if(Roles.userIsInRole(Meteor.user(), ['normal' , 'admins'])) {
            this.render('cross')
        }
        else
            this.render('denied')
    }
});

如果我的理解是正确的,进入 /games/cross 页面后,您使用导航栏尝试导航回 /games 页面,但您的浏览器地址栏现在显示 /games/games 而不仅仅是 /games,并且您的路由器可能什么都不做? (或转到您为未找到的路由配置的任何内容)

这可能是导航栏 link 中的一个问题:您是否尝试过在 href 属性值的开头添加斜杠 /,以便link 是相对于您的域,而不是当前页面?

<a href="/games">Games</a>

而不是:

<a href="games">Games</a>

您还可以使用辅助函数 pathFor,其中 returns 任何路由的 URL 路径组件。

语法

{{pathFor 'path name'}}

要使用 pathFor,您必须在路线中添加 name 属性。

Router.route('/contact', {
    name: 'content-view'
    template: 'contact'
});

<a href="{{pathFor 'content-view'}}">contact</a>

因此,如果您决定更改路线,则无需手动更新所有链接。