0

所以我有一个导航栏,我已经进入了“游戏”中一个名为“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')
    }
});
4

2 回答 2

4

您也可以使用辅助函数pathFor,它返回任何路由的 URL 路径组件。

句法

{{pathFor 'path name'}}

要使用,您必须向您的路线pathFor添加一个属性。name

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

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

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

于 2016-07-26T08:29:52.280 回答
0

如果我的理解是正确的,一旦您进入/games/cross页面,您使用导航栏尝试导航回/games页面,但是您的浏览器位置栏现在显示/games/games而不是/games,并且您的路由器可能没有执行任何操作?(或转到您为找不到路由配置的任何内容)

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

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

代替:

<a href="games">Games</a>
于 2016-07-26T07:06:06.333 回答