根据我对
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
});
};
我错过了什么?
最佳答案 getList方法的两个参数是查询参数和标题.要访问subElement端点,您必须使用以下内容:
Resource.all('subElement').getList(qParams)
我相信这就是你要找的东西.