使用多个JSON渲染进行响应。 (ruby/ Rails)的
这是一个相对简单的,我很确定它只是语法。
我试图将多个对象渲染为json作为控制器中的响应。 所以这样的事情:
def info @allWebsites = Website.all @allPages = Page.all @allElementTypes = ElementType.all @allElementData = ElementData.all respond_to do |format| format.json{render :json => @allWebsites} format.json{render :json =>@allPages} format.json{render :json =>@allElementTypes} format.json{render :json =>@allElementData} end end end
问题是我只得到一个json,它总是最顶层的。 有没有办法以这种方式渲染多个对象?
或者我应该创建一个由其他objects.to_json组成的新对象?
你实际上可以这样做:
format.json { render :json => { :websites => @allWebsites, :pages => @allPages, :element_types => @AllElementTypes, :element_data => @AllElementData } }
如果您使用jquery,您将需要执行以下操作:
data = $.parseJSON( xhr.responseText ); data.websites #=> @allWebsites data from your controller data.pages #=> @allPages data from your controller
等等
编辑:
回答你的问题,你不一定要解析回应,这正是我通常所做的。 有很多function可以立即为您完成,例如:
$.getJSON('/info', function(data) { var websites = data.websites, pages = data.pages, ... });