指定根路由的默认模板

Specifying the default template for root route

我有 poststags 的应用程序。目前他们没有任何关系,只是处于独立状态。

我想将默认模板指定为 postsList 并且我在 router.js :

Router.route('/', {name: 'postsList'});

但这搞砸了 tags 的路由,所以我将 routes.js 更改为:

Router.configure({
    layoutTemplate: 'layout',
    loadingTemplate: 'loading',
    waitOn: function () {
        return Meteor.subscribe('posts');
        return Meteor.subscribe('tags');
    }
});

Router.route('/posts', {name: 'postsList'});

Router.route('/posts/:_id', {
    name: 'postPage',
    waitOn: function () {
        return Meteor.subscribe('comments', this.params._id);
    },
    data: function () {
        return Posts.findOne(this.params._id);
    }
});

Router.route('/posts/:_id/edit', {
    name: 'postEdit',
    data: function () {
        return Posts.findOne(this.params._id);
    }
});

Router.route('/submit', {name: 'postSubmit'});

// Tags Start

Router.route('/tags', {name: 'tagsList'});

Router.route('/tags/submit', {name: 'tagSubmit'});

Router.route('/tags/:_id', {
    name: 'tagPage',
    data: function () {
        return Tags.findOne(this.params._id);
    }
});

Router.route('/tags/:_id/edit', {
    name: 'tagEdit',
    data: function () {
        return Tags.findOne(this.params._id);
    }
});

// Tags End


// Authentication

var requireLogin = function () {
    if (!Meteor.user()) {
        if (Meteor.loggingIn()) {
            this.render(this.loadingTemplate);
        } else {
            this.render('accessDenied');
        }
    } else {
        this.next();
    }
};

Router.onBeforeAction(requireLogin, {only: ['postSubmit', 'tagSubmit']});

因此,当我访问应用程序的根路由时,出现错误:

Oops, looks like there's no route on the client or the server for url: "http://askar-blog.meteor.com/."

有什么解决办法吗?

https://github.com/tenzan/blog

如果您熟悉 Rails,您可以在 routes.rb:

root 'posts#index'
resources :posts

您可以将其重定向到适当的路线。

Router.route('/', function () {
  this.redirect('/posts');
});