2011-10-01 48 views
0

我有這樣一個簡單的XML文件中的Ruby數據:XmlSimple - 使用xml_in()來解析on Rails的

<Course> 
    <CompanyName value="Ford"/> 
    <DepartmentName value="assessments"/> 
    <CourseName value="parts"/> 
    <Result> 
     <CoreData> 
     <Status value="completed"/> 

在我的控制,我有:

def xml_facil 
     require 'xmlsimple' 
     config = XmlSimple.xml_in("#{Rails.root}/doc/TestResults/Ford/assessments/mike.xml", { 'KeyAttr' => 'value' }) 
     @results = config['CourseName'] 
    end 

在我看來,我有:

<%= render @results %> 

,但我得到的錯誤是:

undefined method `formats' for nil:NilClass 

我想我的方法在這裏返回零,所以我如何解決這個問題,這樣我的視圖將呈現「零件」?任何幫助表示讚賞!

+0

我認爲它返回nil,因爲XmlSimple()沒有閱讀的價值關鍵'CourseName'標籤。我切換到Nokogiri並使用了類似的方法,並在視圖中呈現了。現在我需要弄清楚如何捕捉沒有標籤的「零件」字符串。有什麼建議麼? –

回答

0

既然你已經切換到引入nokogiri,你可以挖掘出value的屬性,你有興趣在此:

require 'nokogiri' 
doc = Nokogiri::XML(open("#{Rails.root}/doc/TestResults/Ford/assessments/mike.xml").read) 
value = doc.at('CourseName').attr('value') 
+0

這工作 - 感謝您的幫助。控制器方法現在是doc.xpath('// Course')。map do | i | {'CourseName'=> i.xpath('CourseName')。attr('value')} end –