Ruby on rails $resource调用url在rails内置的简单angularjs应用程序中失败

Ruby on rails $resource调用url在rails内置的简单angularjs应用程序中失败,ruby-on-rails,http,url,angularjs,resources,Ruby On Rails,Http,Url,Angularjs,Resources,我主要遵循Ryan Bates在rails中为angular应用程序所做的设置。在我的文件中: gem 'angularjs-rails' 在application.js中: //= require angular //= require angular-resource //= require turbolinks //= require_tree . 以下是我认为来自views/pages.home.html的所有相关代码: <body data-ng-app="dithat"&g

我主要遵循Ryan Bates在rails中为angular应用程序所做的设置。在我的文件中:

gem 'angularjs-rails'
在application.js中:

//= require angular
//= require angular-resource
//= require turbolinks
//= require_tree .
以下是我认为来自views/pages.home.html的所有相关代码:

<body data-ng-app="dithat">
  <div class="container" data-ng-controller="accomplishmentController">
    <p> What'd you do? </p>
    <form ng-submit="submit()">
      <input type="text" ng-model="newAccomp" />
    </form>
    <div data-ng-repeat="accomp in accomplishments | filter:newAccomp" >
      <div class="box" ng-click="addToCount()">
        <div class="accomplishment">
          {{ accomp.name }}
          <a href="#" ng-click="delete()" class="x">x</a>
          <p class="count"> {{ accomp.count }} </p>
        </div>
      </div>
    </div>
  </div>  

  <script type="text/javascript">
    app = angular.module("dithat", ["ngResource"]);
    function accomplishmentController($scope, $resource) { 
      Entry = $resource('/api/users.json');
      console.log(Entry.query());
      $scope.accomplishments = [];
      $scope.submit = function() {
        $scope.accomplishments.unshift({ name: $scope.newAccomp, count: 0 });
        $scope.newAccomp = '';
      }
      $scope.addToCount = function() {
        var currentcount = this.accomp.count;
        this.accomp.count = currentcount + 1;
      }
      $scope.delete = function() {
        index = this.$index;
        $scope.accomplishments.splice(index, 1)
      }
    }

  </script>  
</body>

你做了什么

{{acomp.name}

{{acomp.count}

app=angular.module(“dithat”,[“ngResource”]); 函数completashmentcontroller($scope,$resource){ Entry=$resource('/api/users.json'); console.log(Entry.query()); $scope.sclements=[]; $scope.submit=函数(){ $scope.sclements.unshift({name:$scope.newAccomp,计数:0}); $scope.newAccomp=''; } $scope.addToCount=函数(){ var currentcount=this.accomp.count; this.accomp.count=currentcount+1; } $scope.delete=函数(){ 索引=此。$索引; $scope.sclements.splice(索引,1) } }
代码可以正常工作,因为在应用程序中,它的行为应该是正常的,但是它没有进行资源调用。我也尝试了
$http
,但也没有成功。我错过了什么??!!非常感谢

根据评论:

completashmentcontroller
函数已定义,但仍需要使用

app.controller('accomplishmentController', accomplishmentController)

否则它将无法使用(也不一定会导致任何错误)。

您能否详细说明如何测试代码是否正常工作,以及您在何处查看和看到没有进行资源调用?查看此代码,您没有向angular注册控制器。您刚刚定义了一个可以用作控制器的函数。您是否缺少app.controller('complethmentcontroller',complethmentcontroller)?非常感谢,它现在工作正常:)。我会补充这个作为一个正确的答案。我能再问一个问题吗,即使这可能是一个不同的问题?它正在进行调用,但调用返回的是空数组。localhost:3000/api/users返回一个json对象,该对象来自用户控制器,其中@users=User.all和i render:json。这个问题怎么了?我想应该是一个单独的问题,但我认为可能会有所帮助。另外,如果您需要一个对象,则应该使用
Entry.get()
而不是
Entry.query
。请参阅-query has
isArray:true