Angular $ http post()格式在Rails上默认为HTML

时间:2014-08-01 17:10:52

标签: ruby-on-rails angularjs http

我有一个工厂,它暴露了一个create()函数,该函数使用下面的$ http.post()。出于某种原因,当从ng-click调用它时,请求被格式化为HTML。所有的参数都是我想要的,但Rails正在以HTML格式处理请求。

工厂:

orizabaServices.factory('requestTypeFactory', ["$http", function($http){
    var urlBase = '/request_types';
    var requestTypeFactory = {};

    requestTypeFactory.create = function(params){
      data = {};
      data.authenticity_token =  $("meta[name='csrf-token']").attr("content");
      data.request_type = params;
      return $http.post(urlBase, data)
    };

    return requestTypeFactory;
  }
])

错误:

Started POST "/request_types" for 127.0.0.1 at 2014-08-01 17:10:00 +0000
Processing by RequestTypesController#create as HTML

3 个答案:

答案 0 :(得分:2)

您可以指定将“.json”添加到urlBase的请求格式。例如:

var urlBase = '/request_types.json';

答案 1 :(得分:0)

您需要为urlBase添加“完整网址”。如果您在本地计算机上请求POST方法

var urlBase = 'http://127.0.0.1/request_types'; 

试试这个

答案 2 :(得分:0)

这是因为默认情况下,rails将所有请求都视为HTML。您可以在config / routes.rb文件中更改此行为,如下所示:

resources :request_types, :defaults => {:format => 'json'}