我正在对我的控制器中的远程API执行HTTP请求,例如:
@results= JSON.load(open("http://someendpoint/whatever.json"))
然后我通过迭代响应中提供的结构在我的视图中呈现响应的内容:
<% @results['result'].each do |result| %>$
从技术角度来看,这可以100%罚款。问题是控制器中的初始JSON加载似乎阻塞了控制器的线程(在呈现页面之前)。页面上有其他信息我想快速加载(即没有控制器线程阻塞)。基本上我想做的是异步发出HTTP请求,然后通过回调呈现JSON结构。如果能让事情变得更容易,我可以把信息放在一个部分。
我绝对可以使用类似XMLHttpRequest的东西将此结果(带有插值的HTML元素)连接成一个字符串,然后只使用DOM插入方法将数据放入视图中。所以,我想我的问题是:
是否有一种很好的方法可以异步执行此操作,例如使用Javascript回调来从XMLHttpRequest中声明的变量中呈现部分?在视图中声明变量然后在局部渲染变量是不是很糟糕?这对我来说似乎是糟糕的设计。我基本上不想在XHR请求之后生成一个长HTML字符串并将其注入DOM,因为它似乎“马虎”。
感谢您的帮助。
答案 0 :(得分:1)
将@results放在它自己的控制器动作中并使用它自己的端点并通过AJAX加载它会不会更简单吗?