繁体   English   中英

在Rails中为JavaScript对象参数生成JSON

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM