我正在尝试通过 ember-rails gem 在 rails 和 ember.js 中创建一个项目。我做了一个rails generate ember:bootstrap
,我正在观察它在下面创建的树assets/javascripts
。
routes.js
我不明白我必须放在顶层文件中的东西和文件夹内的文件之间有什么区别/routes
。
我正在尝试通过 ember-rails gem 在 rails 和 ember.js 中创建一个项目。我做了一个rails generate ember:bootstrap
,我正在观察它在下面创建的树assets/javascripts
。
routes.js
我不明白我必须放在顶层文件中的东西和文件夹内的文件之间有什么区别/routes
。
在顶部的 routes.js 文件中,您将定义您的路由和资源,例如:
您可以使用此Rails 应用程序作为指南。我在这个答案中使用的代码来自那个 repo。
EmBlog.Router.map(function() {
this.resource("posts", {path: '/posts'}, function(){
this.route('new');
this.route('show', {path: '/:post_id'}) ;
this.route('edit', {path: '/:post_id/edit'});
});
});
如果您想自定义这些路由或资源中的任何一个,则在 /routes 文件夹中创建一个新文件。例如,如果我们想通过定义一个事件来自定义显示路由以删除该路由器中的帖子,并使用模型钩子自定义返回的数据,那么我们需要在 /routes/posts/show_route 中创建一个文件。 js并在那里添加我们的代码:
EmBlog.PostsShowRoute = Ember.Route.extend({
model: function(params) {
return EmBlog.Post.find(params.post_id);
},
setupController: function(controller, model){
controller.set('content', model);
},
events: {
destroyPost: function(post) {
post.deleteRecord();
post.get('store').commit();
this.transitionTo('posts');
}
}
});
拆分路由的想法是确保它不会变得太大或填充 100 行代码。如果您更喜欢在同一个文件中定义顶级路由及其自定义。你可以。这是另一个可以做到这一点的 Rails 应用程序。