UsersControllerによってindex.html.erbを提供するこのRailsアプリがあります。そのページを処理するAngularコントローラーには、ユーザー向けの$resourceサービスがあります
CoffeeScript
.factory('User', ['$resource', ($resource) ->
$resource 'api/users/:user_id/:action', {authenticity_token:app.csrf},
query:
method: 'GET'
isArray: yes
new:
method: 'GET'
params:
user_id: 'new'
update:
method: 'PUT'
])
そして、コントローラーはフェッチします
window.app = angular.module("app", ['userServices'])
.config(["$routeProvider", ($routeProvider) ->
$routeProvider
.when "/users",
templateUrl: "assets/templates/users/index.html"
controller: UserCtrl
.otherwise redirectTo: "/users"
])
# users Controllers
UserCtrl = ($scope, User) ->
User.query (r) ->
$scope.users = r
# code..
これはかなり一般的なシナリオだと思いますが、このページだけでサーバーに複数回アクセスする必要があることは明らかです。$ resourceサービスで呼び出されたアクションから返されたデータであるため、Angularがブートストラップデータを使用する方法があるかどうか疑問に思いました。
ブートストラップデータ部分は、Gon ruby gemを使用してGonというグローバル変数に割り当てることで、すでに処理しています。$ scope.users=gon.usersを簡単に実行できることはわかっています。ただし、これらのユーザーモデルでは、$ scope.users[0]。$save()のような優れた機能は得られません。
ありがとうございました!