2015-04-12 183 views
0

我有一個Angular.js應用程序發送POST請求到Rails服務器端點,我無法傳遞和讀取參數。從Rails控制器中的Angular post分析參數的問題

這是我如何發送數據

$scope.submitForm = function(info) { 

    $http({ 
     method: 'POST', 
     url: app.apiServerUrl + '/complaints/create', 
     data: info, 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }).success(function(data, status, headers, config) { 

     // this callback will be called asynchronously 
     // when the response is available 
    }).error(function(data, status, headers, config) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 

    }); 
}; 

傳遞的info對象是在形式的對象:{ title: "something", ocurrence_place: "something" }

而且在我的控制器create行動我有這樣的:

def create 
    p params 
    p params[:title] 
end 

,但是這是獲取日誌打印

{"{\"title\":\"foo\",\"ocurrence_place\":\"bar\"}"=>nil, "controller"=>"complaints", "action"=>"create"} 
nil 

所以,你可以看到,我無法訪問params散列屬性。我該如何解決這個問題,以便我的控制器中的控制器工作並打印預期的內容?

回答

1

它在我看來像你的信息對象不是一個真正的對象,而是一串JSON。

嘗試更改data: infodata: JSON.parse(info)或更正所有調用submitForm(info)的信息,以便info參數實際上是一個對象。

+0

謝謝,我最終實際上使用'JSON.stringify',但你給了我第一個想法:D – rodrigoalves

+0

嗨,奧利弗,你如何解決這個問題?我有同樣的問題,請你分享一下吧.. – Khalid

+0

我相信修正是將'data:info,'改成'data:JSON.stringify(info),' –