2

在我的 Rails 应用程序中,我使用的是 RABL,在前端,我使用 jquery 数据表来查看数据列表(实际上是使用带有数据表指令的角度)。

我正在尝试实现服务器端分页,这需要稍微不同的返回树

在 RABL 本身中有一个很好的解决方案来处理这个问题,但我宁愿在我的控制器中有一个函数,用额外的参数包装 RABL 结果。

例如在我的控制器中,我宁愿有一个

respond_with_datatable(@books)

而此方法以某种方式调用 respond_with(@books) 方法并仅返回 foo 的 json 数组,在此方法中我可以设置适当的响应:

{
"sEcho": 1,
"iTotalRecords": 53,
"iTotalDisplayRecords": 10,
"aaData": [book_array]
}

我不相信有一种我可以调用的方法,它可以简单地完成respond_with(object) 所做的事情,并且只是捕获json 而没有响应。在控制器中使用方法的好处是我不需要更改 RABL,并且在某些情况下我想返回额外的数据表格式,而在其他情况下我不需要。在控制器中进行控制是理想的。任何帮助表示赞赏!

4

1 回答 1

1

您可以使用render_to_string将 RABL 模板呈现为字符串,然后从那里处理它。例如,您可以将其解析回 JSON,然后对其进行操作或将其嵌入到更大的 JSON 结构中。然后,您可以使用render新数据直接响应。

我刚刚在我的应用程序中测试了这个

def index
  @galleries = Gallery.all # or whatever
  respond_with_datatable
end

def respond_with_datatable
  template_json = JSON(render_to_string)
  json = {:new_data => "some new stuff", :orig_data => template_json}
  render :json => json
end
于 2013-09-26T06:01:22.270 回答