我正在尝试使用Ruby on Rails构建一个简单的API,它返回一些有关OTRS数据库中的票证的统计信息。
目前,当我调用我的API进行以下调用时,它将返回以下响应。
API致电
http://localhost:3000/api/openvsclosed
当前回复
[[1,1,1],[2,2,2]]
我想知道如何让它以正确的格式出现:
期望的回复
[
{
"Id":1,
"Opened":1,
"Closed":1
},
{
"Id":2,
"Opened":2,
"Closed":2
}
]
当前控制器
def openvsclosed
sql = "SELECT
@ROW := @ROW + 1 AS Id,
COUNT(t.tn) AS Opened,
COUNT(t.tn) AS Closed
FROM
ticket t
CROSS JOIN (SELECT @ROW := 0) AS Row
WHERE
t.create_time > DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP by
DAY(t.create_time)
ORDER by
t.create_time;"
records = ActiveRecord::Base.connection.execute(sql)
render json: records
end
我是使用Ruby on Rails的新手,所以我很可能在这里遗漏了一些显而易见的东西。
答案 0 :(得分:1)
我建议您查看jbuilder - 您可以使用您希望从控制器返回到json视图的记录的任何格式来自定义json模板。
在这种情况下,您可以执行以下操作:
json.array! @records do |json, record|
json.id record.id
json.opened record.opened
json.closed record.closed
end
答案 1 :(得分:0)
替代方案是https://github.com/nesquena/rabl,设置简单,易于使用