Rails JSON响应问题

时间:2014-01-12 17:14:25

标签: ruby-on-rails json api

我正在尝试使用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的新手,所以我很可能在这里遗漏了一些显而易见的东西。

2 个答案:

答案 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,设置简单,易于使用