2012-09-17 4 views
10

私はUsersControllerによってindex.html.erbを提供するこのRailsアプリケーションを持っています。そのページを処理し、角度コントローラでは、私はユーザー

のための$リソースサービスを持っているの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.. 

を取り出し、明らかに、このページのためにサーバーへの複数回のトリップが必要です。私は、Angularが$リソースサービスで呼び出されたアクションから返されたデータとして、いくつかのブートストラップデータを使用する方法があるかどうか疑問に思っていました。

私はすでにGon ruby​​ gemというGonというグローバル変数にブートストラップデータ部分を割り当てています。私は単純に$ scope.users = gon.usersを行うことができることを知っています。しかし、これらのユーザーモデルは、$ scope.users [0]のような細かいことはしません。$ save()

ありがとう!

+0

を持っています私は、リソースモジュールのソースに掘りおよび/または離れてピッキング助言します$リソースサービスによってフェッチされたオブジェクトそれ以外の場合は、$ httpサービスを消費する独自の$ saveメソッドを追加して、必要に応じて提出することができます。 –

答えて

11

することは、それは本当に簡単です!

たとえば、非角のモデルをすべて変数_tasksおよび角度$リソースモデルのタスクに入れたとします。必要なのは_tasksを1つずつコンストラクタ関数のタスクに渡します。

$scope.tasks = (new Task(task) for task in _tasks) 

その後、$ scope.tasksのそれぞれは、これらすべての$の更新()、$を削除()メソッド

$scope.tasks[0].$update({due_at: new Date}) 
1

User.queryからの往復を避けたいですか?もしそうなら、それは結局のところ、どのようにこの

<html> 
<script type='text/javascript> 
    initialUsers = <%= User.someRubyMethod.to_json %> 
<script> 

のようなものについて次に、あなたのコントローラの内部

$scope.users = intitialUsers; 
+0

ありがとうございます。はい、これは私が今やっていることですが、これも問題です。スコープ内のユーザーモデルを使用するようになりましたが、各ユーザーモデルに$ resource、$ save、$ deleteが$ resourceに付属していません。しかし、私は方法を見つける、私はすぐに答えとして投稿します –

+0

あなたはこれを行う方法を見つけましたか? – schultzter

関連する問題