0

我正在尝试使用 Angularjs 从我放在 Heroku 上的 Rails 测试应用程序中获取 JSON。您将在下面找到我的 Angular 和 Rails 代码。

这是我在 Firebug 控制台中遇到的错误。“网络错误:404 未找到 - http://desolate-earth-2852.herokuapp.com/declarations.json

这不起作用有什么原因吗?

Angularjs 代码

var App = angular.module('App', []);

App.controller('TodoCtrl', function($scope, $http) {
  $http.get('http://desolate-earth-2852.herokuapp.com/declarations.json')
       .then(function(res){
          $scope.todos = res.data;        
        });
});

导轨代码

  def index
    @declarations = Declaration.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @declarations }
    end
  end

以下是路线

Test::Application.routes.draw do
  root :to => 'welcome#index'
  get "welcome/index"
  resources :declarations
end
4

1 回答 1

5

这可能是因为 Rails JS 缩小。Ryan Bates 在他关于集成 AngularJS 的 Railscast中谈到了这一点。我注意到您没有提到您正在考虑配置文件中的缩小,如果您没有,那么这意味着您的 Angular 代码中的所有依赖注入都需要放入数组中,如下所示:

App.controller('TodoCtrl', ['$scope', '$http', function($scope, $http) {
  $http.get('http://desolate-earth-2852.herokuapp.com/declarations.json')
    .then(function(res){
       $scope.todos = res.data;        
    });
}]);

而不是这个:

App.controller('TodoCtrl', function($scope, $http) {
  $http.get('http://desolate-earth-2852.herokuapp.com/declarations.json')
   .then(function(res){
      $scope.todos = res.data;        
   });
});

这告诉 AngularJS 依赖项是什么,因此如果名称确实发生了变化(在缩小期间),则无关紧要。您必须为每个接受服务的函数执行此操作,例如您在此处创建应用程序控制器的函数。

于 2013-10-29T09:14:52.337 回答