Ruby on Rails上的Gem Seer和Ajax

时间:2011-04-27 19:12:29

标签: ruby-on-rails ruby ajax partial

我正在尝试使用Ajax使用Seer显示折线图。

但是当我发出ajax请求时,我得到的只是一个空白页。当我显示使用render :partial时,相同的部分工作正常。

这是部分_show.html.erb

<div id="chart"></div>
<%= Seer::init_visualization -%>
<%= Seer::visualize(
      sensors, 
      :as => :line_chart,
      :in_element => 'chart',
      :series => {
        :series_label => 'location',
        :data_label => 'id',
        :data_method => 'value',
        :data_series => series
      },
      :chart_options => { 
        :height => 250,
        :width => 500,
        :axis_font_size => 12,
        :colors => ['#0099CC','#990000','#009900'],
        :title => "Rain Data",
        :point_size => 0,
        :line_size => 3,
        :title_y => "Water Level in Feet",
        :smooth_line => "true",
      }
     )
 -%>

这有效:

<%= render :partial => 'hcfcdsensors/show', :locals => {:sensors => @sensors , :series => @series} %>

但这不是:

<%= link_to_remote "show" , :url => show_graph_hcfcd_url(@hcfcdsensors) ,:update => "graphDiv" %>

完整的网页空白。 我已经检查了页面中所需变量的操作和可用性,一切都很好。

欢迎任何帮助。

由于 Shaunak

2 个答案:

答案 0 :(得分:1)

进行ajax调用时,需要手动绘制图表。 查看用户“drawChart()”方法绘制图表。

以下是我的ajax回复

<% result_script = Seer::visualize(
      @flight_result_search.sell_classes_for_graph, 
      :as => :area_chart,
      :in_element => 'historical_sellout_chart',
      :series => {
        :series_label => 'name',
        :data_label => 'days_prior',
        :data_method => 'capacity',
        :data_series => [@flight_result_search.current_sell_for_graph,@flight_result_search.historical_sell_for_graph]
      },
      :chart_options => { 
        :height => 400,
        :width => 600,
        :axis_font_size => 11,
        :title => "Historical Sell Out Chart",
        :point_size => 3,
        :color =>['#324F69','#90000B']
      }
     )

%>
<%= result_script.gsub("</script>",' drawChart();</script>') %>

不要忘记评估你的ajax响应,因为它是javascript代码。 另外drawChart()应该在同一个脚本标记中,否则它不起作用。

答案 1 :(得分:0)

一些问题......如果你移动&lt;%= Seer :: init_visualization - %&gt;会发生什么?到封闭的页面而不是部分?此外,请在刷新页面时检查是否存在任何JavaScript错误。在Safari或Firefox中,打开控制台进行检查。