【问题标题】:Passing json parameters to rails api将json参数传递给rails api
【发布时间】:2015-11-02 21:53:11
【问题描述】:

我正在使用 jquery 的 .ajax 方法在 rails api 上调用 ruby​​。 get 调用的主体包括一个布尔变量。然而,这个布尔变量不断被转换为 rails 端的字符串。我在发出请求时使用了正确的 contentType。

这是我的 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[:male] 返回 "true" 字符串而不是 true 布尔值。

根据 Ruby on Rails api:

如果您的请求的“Content-Type”标头设置为“application/json”,Rails 会自动将您的参数转换为 params 哈希,您可以像往常一样访问它。 http://guides.rubyonrails.org/action_controller_overview.html#json-parameters

有谁知道为什么它不会将 json 请求转换为布尔值而是将其保留为字符串。

谢谢。

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby


    【解决方案1】:

    在 Rails 中,参数值总是字符串Rails 不会尝试猜测或转换类型。您必须修改代码逻辑以适应 Rails 的这种行为。例如:

    params[:male] == 'true'
    

    参考this

    【讨论】:

    • 这似乎没问题,但我认为 json 允许布尔值,因此应该有一些方法将其保持为布尔值
    • 即使原始值是布尔值,但当它作为 Rails 参数传递时,它会变成字符串并由 Rails 控制器处理,在控制器端,params[:male] 将始终是字符串。如果您知道如何将其保留为布尔值,请告诉我,然后我会学到一些新东西:)
    猜你喜欢
    • 1970-01-01
    • 2015-07-12
    • 2016-11-04
    • 2011-09-19
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    相关资源
    最近更新 更多