Rails側はAPIの提供(/api/articles/:id にて、articleの情報とそれに紐づくitemをjson形式でレンダリングしています)に専念させ、Angular側でjsonを受け取りserviceクラスのfactoryメソッドからデータのやりとりをしようとしています。こちらが現状のコードです。Angularのバージョンは1.4.7を採用しています。
《service》
javascript
1App.factory 'Article', ($resource, $http) -> 2 class Article 3 constructor: (errorHandler) -> 4 @service = $resource('/api/articles/:id', 5 { id: '@id' }, 6 { update: { method: 'PUT' }}) 7 @errorHandler = errorHandler 8 9 find: (id, successHandler) -> 10 @service.get(id: id, ((article)-> 11 successHandler?(article) 12 article), 13 @errorHandler) 14 15 create: (attrs) -> 16 new @service(article: attrs).$save() 17 18 update: (article, attrs) -> 19 new @service(article: attrs).$update {id: article.id}, (-> null), @errorHandler
こちらをcontrollerから呼び出し、createやupdateを呼んでいます。
《controller》
javascript
1-- assets/javascripts/controllers/article_edit.coffee 2@articleService = new Article(serverErrorHandler) 3@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》
javascript
1App.factory 'Article', ($resource) -> 2 $resource '/api/articles/1'
《controller》
javascript
1Article.query (article) -> 2 $scope.article = articles 3 4$scope.create = -> 5 article = Article.save($scope.Article)
あなたの回答
tips
プレビュー