ngResourceで保存されたid値をもとにeditページにredirectさせたい
ngResourceを使い、Rails側で構築したAPIを通して新しいarticleをDBに格納した後、URLに保存された新しいarticleのidを含むeditページにリダイレクトさせたいです。
/articles/new -> articles/[newで保存されたarticleのid]/edit
以下が現在のコードです。new.html.slim(articles#new)にてarticleの新規作成を行い、DBへの格納が成功すれば、直前に格納されたidをconsole.logに出力させたいのですが、上手くいきません。いろいろ試行錯誤していますが、new_article.idがundefinedになってしまいます。。ご教授いただけますと嬉しいです。よろしくお願いいたします。
= = =
new.html.slim
div ng-controller="ArticleController" ng-init=""
form id="new_article" ng-submit="addArticle(article)"
input type="text" ng-model="article.title"
input type="submit" value="add"
= = =
ArticleController.coffee
angular.module('test').controller "ArticleController", ($scope, Article) ->
$scope.addArticle = (article) ->
@articleService = new Article(serverErrorHandler)
new_article = @articleService.create(title: article.title)
alert new_article.id
$window.location.href = "/articles/"+new_article.id+"/edit"
return
= = =
ArticleService.coffee
angular.module('test').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 ((article) -> attrs.id = article.id), @errorHandler
attrs
update: (article, attrs) ->
new @service(article: attrs).$update {id: article.id}, (-> null), @errorHandler