我有一个任务是为jqGrid形成JSON数据。它需要特殊格式:
{
total: 50,
page:"1",
records: "1500",
rows: [
{ 20, "{2ae39c44-ca9d-4565-9e05-bbd875c1579c}", "Description 1"},
{ 23, "{e1aaf69d-1040-4afa-8995-fd15c3a591b3}", "Description 2"},
{ 25, "{e3df29c7-ef34-46ba-bf66-7838aca7c137}", "Description 3"},
{ 29, "{768ec164-28e5-4614-a259-63257b79e8e0}", "Description 4"}
]
}
因此,“行”的基本规则是:不生成根对象名称,列出没有名称的字段,按照确切顺序列出字段以绑定到相应的列。
我可以强制to_json方法根据需要修改输出吗?
目前to_json产生:
myobjs : [
myobj : { id: 20, uuid: "{2ae39c44-ca9d-4565-9e05-bbd875c1579c}", name: "Description 1"},
myobj : { id: 20, uuid: "{e1aaf69d-1040-4afa-8995-fd15c3a591b3}", name: "Description 2"},
myobj : { id: 20, uuid: "{e3df29c7-ef34-46ba-bf66-7838aca7c137}", name: "Description 3"},
myobj : { id: 20, uuid: "{768ec164-28e5-4614-a259-63257b79e8e0}", name: "Description 4"}
]
答案 0 :(得分:0)
您无法通过模型级to_json
调用来执行此操作,您需要构建中间数据表示,如@Paul所说。类似的东西:
class MyObj
def to_json
[id, uuid, name]
end
end
然后在控制器中:
class MyController < ApplicationController
def grid_data
objs = MyObj.all
json_data = {
:total => objs.count,
:page => 1,
:records => 1500,
:rows => objs.collect {|o| o.to_json}
}
... send json as usual ...
end
end
请注意,我将您的模型设置为生成一个数组,而不是您指定的哈希,因为我认为您复制了错误 - 上面的JSON示例无效。 {20,&#39; foo&#39;,&#39; bar&#39; }无效JSON为&#34; {...}&#34;表示必须键入的哈希,并且不是有序的。