我正在将AngularJS与Rails集成,并且我遇到了一些令我头痛的错误。我有一个AngularJS工厂和一个控制器,它正在调用Rails控制器的索引方法,但是,我在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/controllers
config.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
end
skillzers/index.html.haml
.container{ ng: { controller: 'skillzersCtrl' } }
%p{ ng: { repeat: 'skillzer in skillzers' } }
{{skillzer[0].first_name}}
这个帖子已经有相当长已经与所有的代码,但是这现在正在让我疯狂。另外,我知道它不是最高效的代码,因为它加载了html,并且angularjs需要另一个api调用,但我真的将它用作angularjs的学习练习。任何人都可以指出我做错了什么?这些示例看起来与许多示例应用程序非常相似(特别是Railscasts AngularJS之一),但它不起作用!
谢谢!
的问题是,'Skillzer.query()'从数据库中获取的对象(如哈希),但它期望的阵列。检查你的json响应 – apneadiving 2014-09-02 06:52:29