2015-11-02 157 views
1

我正在使用jquery的.ajax方法在rails api上調用ruby。 get調用的主體包含一個布爾變量。然而,這個布爾變量不斷轉換爲導軌側的字符串。在提出請求時我使用了正確的contentType。將json參數傳遞給rails api

這裏是我的JavaScript調用Ajax:

   var postBody = {male: true} 
       var request = $.ajax({ 
        method: "GET", 
        url: "/biographies/getAll", 
        dataType: 'json', 
        contentType: 'application/json', 
        data: postBody 
      }); 

在Ruby on Rails的控制器端,我使用的是:

params[:male] 

然而PARAMS [:男]返回 「true」 字符串,而不是true布爾值。

根據Ruby on Rails的API:

如果「內容類型」您的請求頭設置爲「application/JSON」,Rails會自動將您的參數轉換成params哈希表,你可以像往常一樣訪問。 http://guides.rubyonrails.org/action_controller_overview.html#json-parameters

有沒有人有任何想法,爲什麼它不會轉換JSON請求爲boolean,但保持它作爲字符串。

謝謝。

回答

2

在Rails中,參數值是總是字符串; Rails不會嘗試猜測或投射類型。你必須修改你的代碼邏輯來調整這個Rails行爲。例如:

params[:male] == 'true' 

參見this以供參考。

+1

這是有道理的。 – user1801879

+0

這似乎是好的,但我認爲json允許布爾值,所以應該有一些方法來保持布爾值 – ImranNaqvi

+0

即使原始值是布爾值,當它作爲Rails參數傳遞時,它將成爲一個字符串,並由Rails控制器和控制器端,'params [:male]'將始終是字符串。如果你知道如何將它保存爲布爾值,請告訴我,我會學到一些新的東西:) –