Rails 参数到数组

jck*_*jck 5 ruby ruby-on-rails

我将从 PHP 文件中选择的复选框列表发送到我们的 Rails API 服务器。所有检查项目的ID将在JSON格式(发送campaign_idsjson_encode来自PHP):

我得到了一个像这样传递给我们 API 的 URL

 Started PUT "/campaigns/function.json?campaign_ids=["6","7"]&user_id=0090000007"
Run Code Online (Sandbox Code Playgroud)

我需要得到 campaign_ids ["6","7"]像使用任何其他数组一样并处理它array.each do || end

如何将其转换为数组以便我可以使用 array.each

下面的示例代码可以实现它,但我认为还有更好的方法吗?

campaign_ids = params[:campaign_ids].to_s          # [\"6\",\"7\"]
campaign_ids = campaign_ids.gsub(/[^0-9,]/,'')     # 6,7

if campaign_ids.size.to_i > 0                      # 3 ??
   campaign_ids.split(",").each do |campaign_id|   
      ...
   end
end
Run Code Online (Sandbox Code Playgroud)

Ho *_*Man 6

URL 的正确格式应该是 campaign_ids[]=6&campaign_ids[]=7. [6, 7]当您执行 params[:campaign_ids] 时,这将自动产生一个数组。

但是假设你不能改变错误参数的格式,你仍然可以通过 JSON.parse(params[:campaign_ids])


小智 4

尝试这个

campaign_ids = JSON.parse(params[:campaign_ids])
Run Code Online (Sandbox Code Playgroud)

你得到params[:campaign_ids]一个字符串。因此,您必须解析该 json 字符串才能获取数组元素。