根据我对restangular docs的理解,调用Resource.getList('subElement',{query:param})
应拨打/resource/subelement?query=param
我在rails API上使用Ransack,我试图传递一些搜索参数,其形式为“q [field_eq] = foo”。
这是一个控制器:
.controller('PlaypenCtrl', function PlaypenCtrl(
$scope,
Resource
) {
'use strict';
var qParams;
$scope.doIt = function() {
qParams = {
per_page: 10
};
qParams['q[some_field_eq]'] = 'foo';
console.log(qParams); //Object {per_page: 10, q[some_field_eq]: "foo"}
Resource.getList('subElement',qParams).then(function(list){
console.log(list);
});
};
});
当我打电话给doIt时,会记录下来:
Error: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'q[some_field_eq]' is not a valid HTTP header field name.
这是有道理的,因为很明显,这不是有效的HTTP头字段名称。
问题是......为什么Restangular会尝试将qParams对象放入请求标头中?根据文档,这些应该是请求参数。
如果我拿出'subElement',事情会按预期运作:
$scope.doThat = function() {
qParams = {
per_page: 10
};
qParams['q[some_field_eq]'] = 'foo';
console.log(qParams); //Object {per_page: 10, q[some_field_eq]: "foo"}
Resource.getList(qParams).then(function(list){
//calls /resource?per_page=10&q%5Bsome_field_eq%5D=foo
console.log(list); //...a normal restangular list object, as expected
});
};
我错过了什么?
答案 0 :(得分:2)
getList方法的两个参数是查询参数和标题。要访问subElement端点,您必须使用以下内容:
Resource.all('subElement').getList(qParams)
我相信这就是你要找的东西。