4

Rails は、ネストされたリソースに :shallow オプションを提供しています。これを頼りにしています。

浅いリソースは次のようになります。

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

私が遭遇した問題は、Angular リソースを使用して Rails リソースをマップしようとするときです。ngResource では 1 つの 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以外の別のモジュールで、これは可能ですか? それとも、Comments と Comment という 2 つのサービスを作成するだけでよいのでしょうか?

4

1 に答える 1

2

実際に github から angular リソースのソース コードを調べたところ、現在のマスターでは、アクションで独自の URL パラメーターを指定できることがわかりました。私の質問に書いた例は、Angular 1.1.4+ (まだリリースされていません) で完全に機能します。

現在の角度マスターにアップグレードすることが解決策でした。

于 2013-03-28T10:51:25.113 に答える