将xml值引入控制器,然后放入数组并传递给在highcharts中查看和显示

时间:2014-05-17 17:48:26

标签: ruby-on-rails ruby xpath nokogiri

我将xml数据引入我的应用程序控制器,传递给数组,然后将存储在此数组中的数据传递给视图并进入高级图。任何人都可以帮忙,我绝大多数都做了,我只是看不出我做错了什么。

def index

@doc =   Nokogiri::XML(open("http://api.worldbank.org/countries/BRA/indicators/1.0.HCount.2.5usd?per_page=10&date=1960:2014"))
@values = Array.new(9)
for i in 0 .. 8
@values[i] = @doc.xpath('//wb:value')
end
end

然后我调用我的系列中的数据:

data: [<%=@values[0]%>, <%=@values[1]%>, <%=@values[2]%>, <%=@values[3]%>, <%=@values[4]%>, <%=@values[5]%>, <%=@values[6]%>, <%=@values[7]%>, <%=@values[8]%>]

错误信息如下:

undefined method `[]' for nil:NilClass 

突出显示错误的区域:

data: [<%=@values[0]%>, <%=@values[1]%>, <%=@values[2]%>, <%=@values[3]%>, <%=@values[4]%>, <%=@values[5]%>, <%=@values[6]%>, <%=@values[7]%>, <%=@values[8]%>] – 

1 个答案:

答案 0 :(得分:0)

在第6行,您忘记指出@doc.xpath('//wb:value'),因此它应该是:

@values[i] = @doc.xpath('//wb:value')

doc是实例变量。

对于阵列问题,您可以使用:

@doc = Nokogiri::XML(open("http://api.worldbank.org/countries/BRA/indicators/1.0.HCount.2.5usd?per_page=10&date=1960:2014"))
m = @doc.xpath("//wb:value").collect(&:text)
@values = Array.new
m.each do |m|
@values << m
end