Javascript 将json参数传递给rails api
我正在使用jquery的.ajax方法对RubyonRailsAPI进行get调用。get调用的主体包括一个布尔变量。然而,这个布尔变量在rails端不断转换为字符串。我在发出请求时使用了正确的contentType 下面是我的javascript ajax调用:Javascript 将json参数传递给rails api,javascript,jquery,ruby-on-rails,ruby,Javascript,Jquery,Ruby On Rails,Ruby,我正在使用jquery的.ajax方法对RubyonRailsAPI进行get调用。get调用的主体包括一个布尔变量。然而,这个布尔变量在rails端不断转换为字符串。我在发出请求时使用了正确的contentType 下面是我的javascript ajax调用: var postBody = {male: true} var request = $.ajax({ method: "GET",
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[:male]返回“true”字符串,而不是true boolean
根据Ruby on Rails api:
如果请求的“Content-Type”头设置为“application/json”,Rails将自动将您的参数转换为params散列,您可以像平常一样访问该散列。
有人知道为什么它不会将json请求转换为布尔值,而是将其保留为字符串吗
谢谢。在Rails中,参数值总是字符串Rails不尝试猜测或强制转换类型。您必须修改代码逻辑以适应这种Rails行为。e、 g:
params[:male] == 'true'
请参阅以供参考。这似乎没问题,但我认为json允许布尔值,因此应该有某种方法将其保留为布尔值,即使原始值是布尔值,当它作为Rails参数传递时,它将成为字符串,并由Rails控制器处理,在控制器端,
params[:male]
将始终是字符串。如果您知道如何将其保持为布尔值,请让我知道,我会学到一些新东西:)