[英]Generate JSON in Rails for JavaScript object parameter
我正在尝试使用canvasXpress HTML5 / JavaScript库在Rails 3项目中生成图表。 他们的图表API使用JSON作为其构造函数中的参数之一。 例如:
new CanvasXpress('canvas', /* JSON here */);
在Rails中,我将有一个视图,该视图将图表作为其整体输出的一部分呈现。 因此,用于创建图表的JavaScript将存在于视图中。
我不太确定如何让Rails生成JavaScript需要的JSON。 是否应在局部视图中生成JSON?
无论如何,一个例子会很好。
在类似情况下,我采取的方法是使用两个视图文件(一个动作)和两个请求来呈现第一页,然后第二页绘制图形的json / data。 (我使用的是精彩的HighCharts库)
在我们的案例中,确保在提供json所需的可能繁重/冗长的数据处理之前加载页面(包含所有导航,选项等)非常重要。 它还为我们提供了仅针对JSON的视图的好处。
控制器:
def show
@graph = Graph.find(id)
respond_to do |format|
format.html do
@variable_needed_for_html_layout = current_user.graphs
end
format.js do
@data = @graph.process_data
end
end
end
html view(show.html.erb)仅呈现所有html标记并为js提出ajax请求(jquery):
<script type='text/javascript'>
$(document).ready(function(){
$.getScript('<%= graph_path(@graph, :js) -%>');
});
</script>
<div id="highchart"></div>
然后,js视图(show.js.erb)完成所有繁重的工作:
var chart = new Highcharts.Chart({
chart: {
renderTo: 'highchart',
}
...
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.