为图表库准备XML数据

时间:2010-07-20 20:05:22

标签: javascript ruby-on-rails xml

我正在使用一个flash文件库,它以xml文件/字符串作为输入。 xml文件是使用xml.builder文件生成的,但我不确定实际上是否找到了生成的xml文件。

如果有(name).xml.builder文件和(name).html.erb文件,这是否意味着在调用format.html和format.xml时会生成html / xml文件?可能是另一个问题?

相关的代码段如下:(input_by_month.html.erb)

<script type="text/javascript" language="javascript" src="/javascripts/AnyChart.js"></script> 
</head>
<body> 
    <h2>Input by Month</h2>
    <script type="text/javascript" language="javascript"> 
    //<![CDATA[
    var chart = new AnyChart('/AnyChart.swf'); 
    chart.setXMLFile('input_by_month.xml'); 
    chart.write(); 
    //]]> 
    </script> 
 </body> 

上面的javascript需要一个名为“input_by_month.xml”的XML文件。我认为该文件是通过“input_by_month.xml.builder”构建的。 XML格式正确,不包含任何错误。

xml.anychart
  xml.settings do
  ....
  end
end 

html视图在控制器中生成,其操作名为“input_by_month”。

class ChartsController < ApplicationController
  def input_by_month
    @months = params[:months]
    @input_by_month = InputByMonth.find(:all, :conditions => "user_id = '#{current_user.id}' AND end_time between '#{@months.months.ago.to_date}' AND '#{Time.now.to_date}'")

    respond_to do |format|
      format.html
      format.xml
    end
  end
end

1 个答案:

答案 0 :(得分:0)

我犯的错误是由于routes.rb没有考虑.xml路径。由于input_by_month是自定义操作,因此我使用以下方法将其映射到routes.rb:

map.connect "charts/input_by_month", :controller => 'charts', :action => 'input_by_month'

以上行只映射.html文件。我需要的是还为.xml文件添加路由。为此,我需要添加一行:

map.connect "charts/input_by_month.:format", :controller => 'charts', :action => 'input_by_month'

添加此行,允许我的.html视图中的javascript找到input_by_month操作生成的.xml文件。