如何使用response_to for json?

时间:2015-06-10 09:06:16

标签: ruby-on-rails json angularjs ruby-on-rails-4

我有点困惑:我正按照question编写一个集中控制器,我对respond_to方法的工作有点困惑。

API::Controller我有这样的事情:

def index
  @post = Post.all
  render json: @posts
end

在js(AngularJS)方面,我有类似的东西:

$http.defaults.headers.common.Authorization = 'Token token='+ $scope.user.auth_token;

$http.get('/api/posts').success(function (data) {

  $scope.posts = data;

});

在API控制器上工作正常,但是我想使用共享控制器:

def index
  @post = Post.all
  respond_to do |format|
    format.html { render layout: 'admin' }
    format.json { render json: @invoices }
  end
end

但是,当我尝试执行ajax调用时,似乎API正在使用html而不是json进行响应。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

在您尝试使用的网址末尾附加.json。这样,服务器就会知道请求要求JSON格式的数据,而默认格式是HTML。

如果您正在使用jQuery来执行AJAX,并希望以JSON格式接收数据而不在末尾添加.json,则可以使用函数$.getJSON(),或者可以简单地传递$.jquery()函数调用中的选项dataType: "json"

$.ajax({
    dataType: "json", // To receive data back in JSON
    url: url,
    data: data,
    success: success
});