首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在$resource调用中返回奇怪错误的Rails+AngularJS

在$resource调用中返回奇怪错误的Rails+AngularJS
EN

Stack Overflow用户
提问于 2014-09-02 10:54:20
回答 1查看 273关注 0票数 0

我正在将AngularJS与Rails集成在一起,我得到了一些让我抓狂的错误。我有一个AngularJS工厂和一个控制器,它调用Rails控制器的index方法,但是,我在JavaScript控制台中得到了这个错误。

代码语言: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

代码语言:javascript
复制
//= 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

代码语言:javascript
复制
var app = angular.module('sideSkillz', ['ngResource'])

factories.js

代码语言:javascript
复制
var app = window.app;

app.factory('Skillzer', function ($resource) {
  return $resource('/skillzers/:id',
    { id: "@id" },
    { update: { method: 'PUT' } }
  );
});

skillzersCtrl.js

代码语言:javascript
复制
function skillzersCtrl ($scope, Skillzer) {
  $scope.skillzers = Skillzer.query();
}

skillzers_controller.rb

代码语言:javascript
复制
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

代码语言:javascript
复制
.container{ ng: { controller: 'skillzersCtrl' } }
  %p{ ng: { repeat: 'skillzer in skillzers' } }
    {{skillzer[0].first_name}}

这篇文章已经写了很长时间了,所有的代码都已经写完了,但现在这篇文章让我抓狂了。此外,我知道这不是最有效的代码,因为它加载了html,并且angularjs需要进行另一个api调用,但我真的将其用作angularjs的学习练习。有谁能指出我做错了什么吗?这些示例看起来与许多示例应用程序非常相似(特别是Railscasts one),但它不起作用!

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-09-02 17:10:48

您的出厂配置为单记录。这就是你得到这个错误的原因。在索引操作的工厂下面。

factories.js

代码语言:javascript
复制
var app = angular.module('sideSkillz');

app.factory('Skillzer', function ($resource) {
  return $resource('/skillzers',
    { }, // Query parameters
    { 'query': { method: 'GET' } }
  );
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25615178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档