我正在将AngularJS与Rails集成在一起,我得到了一些让我抓狂的错误。我有一个AngularJS工厂和一个控制器,它调用Rails控制器的index方法,但是,我在JavaScript控制台中得到了这个错误。
Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an array but got an object
http://errors.angularjs.org/1.2.22/$resource/badcfg?p0=array&p1=object
at http://localhost:3000/assets/angular.js?body=1:79:12
at $http.then.value.$resolved (http://localhost:3000/assets/angular-resource.js?body=1:541:23)
at wrappedCallback (http://localhost:3000/assets/angular.js?body=1:11547:81)
at wrappedCallback (http://localhost:3000/assets/angular.js?body=1:11547:81)
at http://localhost:3000/assets/angular.js?body=1:11633:26
at Scope.$eval (http://localhost:3000/assets/angular.js?body=1:12659:28)
at Scope.$digest (http://localhost:3000/assets/angular.js?body=1:12471:31)
at Scope.$apply (http://localhost:3000/assets/angular.js?body=1:12763:24)
at done (http://localhost:3000/assets/angular.js?body=1:8358:45)
at completeRequest (http://localhost:3000/assets/angular.js?body=1:8572:7)我的代码是这样的:
application.js
//= require jquery
//= require jquery_ujs
//= require angular
//= require angular-resource
//= require bootstrap
//= require jquery.raty
//= require welcome
//= require users
//= require angular/config
//= require angular/factories
//= require_tree ./angular/controllersconfig.js
var app = angular.module('sideSkillz', ['ngResource'])factories.js
var app = window.app;
app.factory('Skillzer', function ($resource) {
return $resource('/skillzers/:id',
{ id: "@id" },
{ update: { method: 'PUT' } }
);
});skillzersCtrl.js
function skillzersCtrl ($scope, Skillzer) {
$scope.skillzers = Skillzer.query();
}skillzers_controller.rb
class SkillzersController < ApplicationController
respond_to :html, :json
before_action :find_skillzer, only: :show
def index
@skillzers = Skillzer.all
respond_with @skillzers
end
def show
respond_with @skillzer
end
private
def find_skillzer
@skillzer = Skillzer.find(params[:id])
end
endskillzers/index.html.haml
.container{ ng: { controller: 'skillzersCtrl' } }
%p{ ng: { repeat: 'skillzer in skillzers' } }
{{skillzer[0].first_name}}这篇文章已经写了很长时间了,所有的代码都已经写完了,但现在这篇文章让我抓狂了。此外,我知道这不是最有效的代码,因为它加载了html,并且angularjs需要进行另一个api调用,但我真的将其用作angularjs的学习练习。有谁能指出我做错了什么吗?这些示例看起来与许多示例应用程序非常相似(特别是Railscasts one),但它不起作用!
谢谢!
发布于 2014-09-02 17:10:48
您的出厂配置为单记录。这就是你得到这个错误的原因。在索引操作的工厂下面。
factories.js
var app = angular.module('sideSkillz');
app.factory('Skillzer', function ($resource) {
return $resource('/skillzers',
{ }, // Query parameters
{ 'query': { method: 'GET' } }
);
});https://stackoverflow.com/questions/25615178
复制相似问题