我试着角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