Angular和Rails资源浅

时间:2013-03-28 10:14:23

标签: ruby-on-rails rest angularjs

Rails提供了一个:嵌套资源的浅层选项,我依赖它,因为否则我会有4或5个嵌套资源,这将非常糟糕。

浅层资源看起来像这样:

resources :posts do
  resources :comments, :only => [:index, :create]
end
resources :comments, :only => [:show, :update, :destroy]

我遇到的问题是,当尝试使用Angular资源映射Rails资源时,因为ngResource只允许定义单个URI,因此/posts/:post_id/comments/:id/comments/:id

我想让ngResource允许方法覆盖URI和插值。例如:

app.factory('Comment', ['ngResource', function ($resource) {
    $resource('/comments/:id', { 'id': '@id', post_id: '@post_id' },
        index:   { method: 'GET',  url: '/posts/:post_id/comments', isArray: true },
        create:  { method: 'POST', url: '/posts/:post_id/comments' },
        show:    { method: 'GET' },
        update:  { method: 'PUT' },
        destroy: { method: 'DELETE' }
    );
}]);

这可能吗,可能还有另一个模块而不是ngResource?或者我应该建立两个服务:评论和评论?

1 个答案:

答案 0 :(得分:2)

我实际上从github查看了角度资源的源代码,发现当前的master允许操作指定自己的url参数。我在我的问题中写的例子非常适用于Angular 1.1.4+(尚未发布)。

升级到当前的角度主控是解决方案。