Javascript 角度资源查询()不工作

Javascript 角度资源查询()不工作,javascript,ruby-on-rails,angularjs,Javascript,Ruby On Rails,Angularjs,我目前正在尝试在rails中构建一个小的Todo list应用程序,前端有角度。目前,我可以创建Todo对象并将其保存到数据库中,但无法在页面刷新时返回所有Todo对象。当我加载页面时,Todo计数为零,在控制台中,我似乎返回了一个空数组。我相信问题与控制器有关,我试图从索引操作中查询所有TODO。这是我的rails控制器: class TodosController < ApplicationController respond_to :json def index res

我目前正在尝试在rails中构建一个小的Todo list应用程序,前端有角度。目前,我可以创建Todo对象并将其保存到数据库中,但无法在页面刷新时返回所有Todo对象。当我加载页面时,Todo计数为零,在控制台中,我似乎返回了一个空数组。我相信问题与控制器有关,我试图从索引操作中查询所有TODO。这是我的rails控制器:

class TodosController < ApplicationController
respond_to :json

  def index
    respond_with Todo.all
  end

  def show
    respond_with Todo.find(params[:id])
  end

  def create
    respond_with Todo.create(params[:todo])
  end

  def update
    respond_with Todo.update(parms[:id], params[:todo])
  end

  def destroy
    respond_with Todo.destroy(params[:id])
  end
end
angular.module("Todo", ["ngResource"])

function TodoController($scope, $filter, $resource) {
  Todo = $resource("/todos", {id: "@id"}, {update: {method: 'PUT'}})
    $scope.todos = Todo.query()

  $scope.getTotalTodos = function () {
      return $scope.todos.length;
  };

  $scope.clearCompleted = function () {
    Todo.save({done:true})
    $scope.todos = $filter("filter")($scope.todos, {done:false});
};

  $scope.addTodo = function () {
    entry = Todo.save({title:$scope.newTodo.title, importance:$scope.newTodo.importance, description:$scope.newTodo.description, done:false})
    $scope.todos.push(entry);
    $scope.newTodo.title = '';
    $scope.newTodo.importance = '';
    $scope.newTodo.description = '';
  };

}

同样,我能够创建一个对象,该对象保存到数据库中,并在创建后显示在列表中,并将计数移动到1。刷新页面时,不会显示新创建的对象,并且计数返回到零。我在谷歌论坛上问过这个问题,有人告诉我这是服务器问题。

您可以尝试在资源声明的第一个参数中添加id作为可选参数:
Todo=$resource(“/todos/:id”,{id:@id”},{update:{method:'PUT'})。如果这不起作用,您应该尝试纯粹在服务器端测试它,看看
index
方法返回的是什么,这样您就可以隔离问题的实际位置。当我添加:id时,没有任何更改。如果我转到/todos.json,我看到所有应该出现在客户端的对象。可能重复的@user2184718不要问同样的问题两次。
angular.module("Todo", ["ngResource"])

function TodoController($scope, $filter, $resource) {
  Todo = $resource("/todos", {id: "@id"}, {update: {method: 'PUT'}})
    $scope.todos = Todo.query()

  $scope.getTotalTodos = function () {
      return $scope.todos.length;
  };

  $scope.clearCompleted = function () {
    Todo.save({done:true})
    $scope.todos = $filter("filter")($scope.todos, {done:false});
};

  $scope.addTodo = function () {
    entry = Todo.save({title:$scope.newTodo.title, importance:$scope.newTodo.importance, description:$scope.newTodo.description, done:false})
    $scope.todos.push(entry);
    $scope.newTodo.title = '';
    $scope.newTodo.importance = '';
    $scope.newTodo.description = '';
  };

}