我有一个工厂,它暴露了一个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
答案 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'}