GTD*_*Dev 15 json nested-forms nested-attributes ruby-on-rails-3 angularjs
我正在尝试使用角度JS,我想从我的rails应用程序中定义的嵌套资源中获取数据.
我写了以下几行:
UserMission = $resource("/users/:user_id/user_missions/:id", {user_id: "@user_id", id: "@id"}, {update: {method: "PUT"}})
$scope.user_missions = UserMission.query()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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'
Run Code Online (Sandbox Code Playgroud)
我的rails路由组织如下:
resources :users do
resources :user_missions
end
Run Code Online (Sandbox Code Playgroud)
我认为这归结于我不理解"@id".它说它来自angularjs网站的"数据对象" ,我不确定这意味着什么.
任何帮助将不胜感激.
更新
另一个问题.我没有使用嵌套资源(示例用户has_many :missions, through: :user_missions)找到带有angularjs的rails的任何示例$resource.是否有一个$resource使用ajax 操纵嵌套资源(with )的angularjs的好例子?
rem*_*gio 16
通过阅读我的回答对你前面的问题,您应该包括两个在传递中调用,即参数对象的参数值:
$scope.user_missions = UserMission.query({user_id: some_value, id: some_other_value});
Run Code Online (Sandbox Code Playgroud)
bpe*_*man 10
我也在寻找一种使用ngResource处理嵌套资源的方法.我不熟悉rails的工作原理或数据的外观,但这就是我的意思:
{"num_results": 5, "objects": [....], "page": 1, "total_pages": 1}
Run Code Online (Sandbox Code Playgroud)
我需要进入并抓取嵌套对象数组以进行查询操作.使用1.0版本的角度是不可能的.但是,使用1.1版本(我用1.1.3测试)可以做到这一点.
在我的控制器中,我只是设置这样的资源:
$scope.MyModel = $resource("/api/mymodel/:id",
{},
{'query': {method: 'GET', isArray: true, "transformResponse": function (data) {
return JSON.parse(data).objects;
}}});
Run Code Online (Sandbox Code Playgroud)
这里的关键是transformResponse作为动作配置的一部分传递的函数.在1.1中,操作配置中的任何额外配置项都会传递到$http请求的配置中.该$http服务允许一个transformResponse可以操作请求返回的数据的函数.使用此函数,我可以进入嵌套结构并返回操作所需的数组.
需要注意的一点是,transformResponse函数接收一个字符串值,因此您必须首先将数据解析为您所期望的内容.另一个需要注意的是,您返回所需的实际最终数据值,而不是字符串.即使您收到字符串值,也应返回所需的最终数据值.
| 归档时间: |
|
| 查看次数: |
13708 次 |
| 最近记录: |