2011-04-27 83 views
2

我正在尝试使用使用Ajax的Seer来显示线图。Ruby on Rails上的Gem Seer和Ajax

但是我得到的是一个空白页面,当我发出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

回答

0

在进行ajax调用时,您需要手动绘制图表。 Seer用户“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>') %> 

不要忘了EVAL你的Ajax响应,因为它是JavaScript代码。 另外drawChart()应该在相同的脚本标记中,否则它不起作用。

+0

嗨Dinesh,这工作对我的快速尝试,我可以看到图表,当我在浏览器中使用ajax链接,但现在当我真的把它放在Rails应用程序,它仍然是空白,这次只有错误是“容器未定义”。 – Shaunak 2011-10-04 21:44:20

0

夫妇的问题...如果你移动<%=先知:: init_visualization会发生什么 - %>到封闭页面,而不是局部的?另外,在刷新页面时检查是否有任何JavaScript错误。在Safari或Firefox中,打开控制台进行检查。

+0

当我将<%= Seer :: init_visualization - %>移动到封闭页面时,会得到相同的结果。我在Chrome上使用chrome和控制台工具。最初在页面上没有错误。当我点击制作的链接和ajax请求时,我只是得到一个空白页面。 – Shaunak 2011-04-27 20:39:06

+0

我清理了一些东西,并把它放在一个干净的页面上查看。我仍然有同样的问题。这一次我得到一个错误:'[16:34:30.093]谷歌未定义/javascripts/prototype.js?1300914093:403'在Firefox中。 – Shaunak 2011-04-27 21:36:21

+0

但同时,如果我尝试链接ajax单独使用我可以看到图形没有问题。 – Shaunak 2011-04-27 21:37:50