【问题标题】:convert params array of numbers (a string) into an actual integer Array将 params 数字数组(字符串)转换为实际的整数数组
【发布时间】:2017-01-25 21:23:13
【问题描述】:

我通过 Ajax PATCH 调用发送一个数组 ("[1,3,44,2,0]"),它到达如下:

Parameters: {"ids"=>"[1,3,44,2,0]"}

为了进行污点检查,我使用以下行 - 其中匹配锚定字符串的开头和结尾,并确保至少有一位数字,或者数字以逗号分隔:

raise "unexpected ids #{params[:ids]}" unless params[:ids].match(/\A\[(\d+,)*\d+\]\z/)

为了制作一个真正的整数数组,我使用以下方法(去掉括号,用逗号分割,将每个字符串元素转换为整数):

irb> "[1,3,44,2,0]"[1...-1].split(',').map {|e| e.to_i}
 => [1, 3, 44, 2, 0]

有没有更好(更简单、更便宜、更快)的方法来做到这一点?

【问题讨论】:

    标签: ruby-on-rails arrays ruby parameters int


    【解决方案1】:

    试试

    JSON.parse(params[:ids])
    

    但我认为你应该检查你的 Ajax 调用。必须可以不将数组作为字符串传递。

    【讨论】:

    • 谢谢!我的错!我刚刚检查了 Ajax 调用,虽然我想将数组作为整数数组传递,但我实际上是在上面调用 JSON.stringify。我完全忘记了这一点——我这样做是因为我读到有人推荐这种方法。这是一个糟糕的建议(给stringify)吗?只传递一个整数数组有什么问题吗?
    猜你喜欢
    • 2015-12-31
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多