2012-10-23 95 views
3

我有一些数据存储为XML文件。我把它放到我创建的目录中,app/data/myxml.xml如何读取Rails风格的文件

现在我想解析它使用Nokogiri。要找到文件我引用一个绝对路径:

@doc = Nokogiri::XML(open("/home/me/webA/myrailsproject/app/data/myxml.xml")) 

绝对路径绝对使代码丑陋。有没有更简洁的方式来引用文件?如:

@doc = Nokogiri::XML(open("myxml")) 

回答

5

在Rails的当前目录是应用程序的根,所以你可能只是做

@doc = Nokogiri::XML(open("data/myxml.xml")) 

或者,如果你想成为肯定的是,你可以使用RAILS_ROOT常数 -

@doc = Nokogiri::XML(open("#{RAILS_ROOT}/data/myxml.xml")) 
+0

都不适合我,但第二个帮我发现“#{Rails.root} /app/data/myxml.xml”效果很好。你试过第一个吗?我期望一个人应该工作,但事实并非如此。 – Anar

+0

@Anar真正的问题是,你试过吗? ;)您可能还想考虑使用File.join来连接文件路径,并查看[rdoc]中的File.expand_path(http://www.ruby-doc.org/core-1.9.3/File的.html)。 – iain

+0

已更新,这很奇怪 - 我使它适用于“app/data/myxml.xml”而不是“data/myxml.xml” – Anar