我試着角JS,我想從我的rails應用程序中定義的嵌套資源中獲取數據。AngularJS ngResource與嵌套資源
我寫了下面幾行:
UserMission = $resource("https://stackoverflow.com/users/:user_id/user_missions/:id", {user_id: "@user_id", id: "@id"}, {update: {method: "PUT"}})
$scope.user_missions = UserMission.query()
,我得到以下錯誤:
Processing by UsersController#show as JSON
Parameters: {"id"=>"user_missions"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", "user_missions"]]
Completed 404 Not Found in 10ms
ActiveRecord::RecordNotFound (Couldn't find User with id=user_missions):
app/controllers/users_controller.rb:100:in `current_resource'
app/controllers/application_controller.rb:34:in `authorize'
我的軌道路線被組織像這樣:
resources :users do
resources :user_missions
end
我想它來自對我來說不理解「@id」。它說它來自angularjs site的「數據對象」,我不確定這意味着什麼。
任何幫助,將不勝感激謝謝。
更新
另一個問題。我還沒有找到任何使用嵌套資源(例如用戶has_many :missions, through: :user_missions
)以及使用$resource
的angularjs的rails示例。有沒有angularjs操作嵌套資源(使用$resource
)與Ajax的好例子?
所以我還是有點困惑。我如何從父對象(User)和子對象(UserMission)中找到id,並將它們傳遞給Rails應用中的Angularjs資源並完成嵌套關係查詢? – GTDev 2013-02-25 21:20:28
通過聲明你的服務默認參數'{user_id:「@user_id」,id:「@id」}你說的是,當調用不帶參數的服務時,它們會從你在調用中傳遞的對象中獲取值。在你的情況下,你調用沒有參數的服務,就像在'UserMission.query()'中一樣,但是你沒有傳遞任何值,所以服務被調用了空值,因此服務器得到了'/ users/user_missions '這給出了錯誤。您應該在呼叫中包含參數值,正如我在答案中所指出的那樣。 – remigio 2013-02-26 07:58:53