Angularを採用したRailsアプリケーションで、$httpサービスを使わずに、factoryメソッドからCRUD操作をしたい
Rails側はAPIの提供(/api/articles/:id にて、articleの情報とそれに紐づくitemをjson形式でレンダリングしています)に専念させ、Angular側でjsonを受け取りserviceクラスのfactoryメソッドからデータのやりとりをしようとしています。こちらが現状のコードです。Angularのバージョンは1.4.7を採用しています。
《service》
App.factory 'Article', ($resource, $http) ->
class Article
constructor: (errorHandler) ->
@service = $resource('/api/articles/:id',
{ id: '@id' },
{ update: { method: 'PUT' }})
@errorHandler = errorHandler
find: (id, successHandler) ->
@service.get(id: id, ((article)->
successHandler?(article)
article),
@errorHandler)
create: (attrs) ->
new @service(article: attrs).$save()
update: (article, attrs) ->
new @service(article: attrs).$update {id: article.id}, (-> null), @errorHandler
こちらをcontrollerから呼び出し、createやupdateを呼んでいます。
《controller》
@articleService = new Article(serverErrorHandler)
@articleService.update($scope.article, title: article.title, description: article.description)
こちらをできればもう少しスマートに記述したいです。参考書やウェブの情報によると今回のようなアプリケーションでは、$httpサービスは基本的に用いずに$resourceサービスだけで実装するのが一般的と推奨されており、リファクタリングをしようとしているのですが、Angular内部のエラーに詰まり、うまく移行できません...
Error: [$resource:badcfg] http://errors.angularjs.org/1.4.0/$resource/badcfg?p0=query&p1=array&p2=object&p3=GET&p4=%2Fapi%2Farticles%2F13495
できれば、下記のように(「Rails+JSフレームワークでリアルタイム掲示板を作成してみる(AngularJS編)」を参考にしました)serviceクラスではAPIの受け取りだけに専念させシンプルに記述したいです。この方法がやはり推奨なのか、また、コードに良くない点やエラーの原因が見受けられましたら、どうかアドバイスをいただきたいです。読みにくいコードで申し訳ありませんがどうかよろしくお願いいたします。
《service》
App.factory 'Article', ($resource) ->
$resource '/api/articles/1'
《controller》
Article.query (article) ->
$scope.article = articles
$scope.create = ->
article = Article.save($scope.Article)