我将从PHP文件中选择的复选框列表发送到我们的Rails API服务器。所有选中项目的ID将以json格式发送(campaign_ids
来自PHP的json_encode
):
我有一个URL传递给我们的API
Started PUT "/campaigns/function.json?campaign_ids=["6","7"]&user_id=0090000007"
我需要获取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
答案 0 :(得分:4)
网址的正确格式应为campaign_ids[]=6&campaign_ids[]=7
。当你执行params [:campaign_ids]时,这会自动产生一个[6, 7]
数组。
但假设您无法更改错误参数的格式,您仍然可以通过JSON.parse(params[:campaign_ids])
答案 1 :(得分:2)
试试这个
campaign_ids = JSON.parse(params[:campaign_ids])
您将params[:campaign_ids]
作为字符串。
因此,您必须解析该json字符串以获取数组元素。
答案 2 :(得分:-1)
params [:campaign_ids]已经是您想要的数组格式,您无需使用to_s将其转换为字符串。
你可以做这样的事情
campaign_ids = params[:campaign_ids]
campaign_ids.each do |campaign_id|
# do the computation here
end