【问题标题】:Angular $http request not returning Rails resourceAngular $http请求不返回Rails资源
【发布时间】:2014-11-22 06:50:24
【问题描述】:

我想获取数据库中所有帖子的 JSON 对象。

这是模块:

angular
.module('AngularRails', [
    'ngRoute',
    'templates'
    ]).config(function($routeProvider) {
        $routeProvider
          .when('/', {
            templateUrl: 'home.html',
            controller: 'HomeCtrl'
          });
    });

控制器:

angular.module('AngularRails')
  .controller('PostsController', function($scope, $http) {
    var posts = $http.get('/posts.json').success(function(data){
      return data;
    });

    $scope.posts = posts;
  });

观点:

<h1>The Home View!</h1>

<ul>
  <li ng-repeat='post in posts'>
    {{ post.title }}
  </li>
</ul>

当我检查控制台时,我可以看到请求是针对指定的 URL 发出的(并且可以看到我想要的 JSON),但是它被深深地埋在了某个大对象中。

如何在无序列表中显示帖子?

编辑

根据 Dan 的建议,我已将控制器更改为:

angular.module('AngularRails')
  .controller('PostsController', function($scope, $http) {
    $http.get('/posts.json').success(function(data) {
      $scope.posts = data;
    });
  });

没有雪茄。

【问题讨论】:

  • 能否请您回复一下?

标签: ruby-on-rails ruby json angularjs


【解决方案1】:

您要查找的数据将作为参数从$http 传递给成功回调。 $scope.posts 在您的示例中是整个 http 对象。试试这样的:

angular.module('AngularRails').controller('PostsController', function($scope, $http) {
    $http.get('/posts.json').success(function(postData, status, headers, config){
        $scope.posts = postData; // this is the JSON from the web request
    });

    // $scope.posts = posts; <-- this was the $http promise object
});

示例

Rails 控制器:

def list
  posts = { posts: %w(post1 post2 post3 post4) } # Or ActiveRecord query etc...

  respond_to do |format|
    format.json { render json: posts }
  end
end

Angualr 控制器:

$http.get('http://localhost:3000/posts/list.json').success (data) ->
    $scope.posts = data.posts
    console.log $scope.posts // ["post1", "post2", "post3", "post4"]

【讨论】:

  • 嘿,丹!感谢您的建议,但这似乎不起作用。我用我尝试过的内容更新了原始帖子。我确实尝试使用其余参数,但我很确定它可以缩短为一个(如果我错了,请纠正我)。
  • @DylanRichards 我已经用一个更好的例子更新了答案,看看你在 Rails 端做了什么可能会很有用,但这应该会有所帮助。同样你是对的,成功回调中的额外参数是不需要的——这只是为了说明。让我知道是否有帮助! (这里的js是coffeescript!)
猜你喜欢
  • 2021-07-27
相关资源
最近更新 更多