ember.js差异路由文件夹和router.js文件

时间:2013-03-30 19:55:32

标签: ruby-on-rails ember.js ember-rails

我正在尝试通过ember-rails gem在rails和ember.js中创建一个项目。 我做了一个rails generate ember:bootstrap,我正在观察它在assets/javascripts下创建的树。

我无法理解我必须放在顶级routes.js文件和/routes文件夹内的文件中的区别。

1 个答案:

答案 0 :(得分:1)

在顶部的routes.js文件中,您将定义您的路线和资源,例如:

您可以使用此 rails app 作为指南。我在这个答案中使用的代码来自那个回购。

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行的代码。如果您更喜欢在同名文件中定义顶级路由及其自定义。您可以。 another rails app 就是这样做的。