angular.js?body = 1:9998错误:[$ resource:badcfg]资源配置错误。预期的响应包含一个数组但得到一个对象

时间:2014-12-12 09:47:15

标签: ruby-on-rails angularjs

我是angularjs和rails的新手,我正在尝试将rails控制器中的json数据发送到angularjs控制器,如下所示:

class ProductsController < ApplicationController
  def index
   @prods= Product.all.to_json()
  end
end

application.html.erb:

<!DOCTYPE html>
<html ng-app="ProductApp">
<head>
  <title>Angular2</title>
  <%= stylesheet_link_tag    'application', media: 'all'  %>
  <%= javascript_include_tag 'application' %>
  <%= csrf_meta_tags %>

  </head>
  <body ng-controller="productsCtrl">
   <%= yield %>
  </body>
  </html>

产品/ index.html.erb

<ul ng-repeat= "p in products" >
  <li>{{p.name}}</li>
</ul>

productsCtrl.js

angular.module("ProductApp", ["ngResource"])
 .controller("productsCtrl", function ($scope, $resource){
  prod = $resource("/products/:id", {id: "@id"}, {update: {method: "PUT"}});
   $scope.products= prod.query();
 });

1 个答案:

答案 0 :(得分:0)

试试这个

app.factory('api', ['$resource', function($resource) {

    return $resource('', {},
            {
                products: {
                    url: '/products/:id',
                    method: 'POST'
                }
}]);

angular.module("ProductApp", ["ngResource"])
 .controller("productsCtrl", function ($scope, $resource, api){

  api.products({id: {id: "@id"}}, function(result) {
             $scope.products= result;
  }, function(error) {

  });
  $scope.products= prod.query();
});

编辑:

angular.factory('api', ['$resource', function($resource) {

return $resource('', {},
        {
            products: {
                url: '/products/:id',
                method: 'POST'
            }})
 }]);

 angular.module("ProductApp", ["ngResource"])
 .controller("productsCtrl", function ($scope, $resource, api){

   api.products({id: {id: "@id"}}, function(result) {
         $scope.products= result;
   }, function(error) {

 });
  $scope.products= prod.query();
});

但仍有一些错误:

 Uncaught TypeError: undefined is not a functionproductsCtrl.js?body=1:2 (anonymous function)
 angular.js?body=1:9998 Error: [ng:areq] Argument 'productsCtrl' is not a function, got undefined