簡體   English   中英

Ruby on Rails XML生成

[英]Ruby on Rails XML generation

我正在嘗試構建一個簡單的方法,該方法可以從Rails中的ruby數據庫中創建XML文件。 我覺得我的代碼是正確的,但是我沒有看到XML中的所有用戶。
我是RoR的新手。

這是我的代碼:

def create_file     
  @users = User.find(:all)
  file = File.new('dir.xml','w')
  doc = Document.new

  make = Element.new "make"
  @users.each do |y|
    make.add_element "name"
    make.elements["name"].text  = y.name
    make.add_element "description"
    make.elements["description"].text = y.description
  end    

  doc.add_element make

  file.puts doc
  file.close
end

和我的XML輸出:

<make>
 <name>sammy</name><description>samsdescription</description>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
 <name/><description/>
</make>

我不明白為什么所有字段都沒有填充。 為什么僅顯示整個數據庫之一? 我非常感謝您的幫助。

您應該調查@users.to_xml ,看看是否可以使用它而不是使用自己的解決方案。 Rails API文檔中閱讀有關它的更多信息。

您的代碼中有一個錯誤。 在每次迭代中,您都使用add_element創建一個元素,然后嘗試使用Elements#[]訪問該元素。 但是,當您在Elements#[]使用節點名稱時,它僅返回第一個匹配的節點。 因此,您將在每次迭代中創建一個節點,但僅更新第一個。 嘗試將代碼更改為以下內容:

@users.each do |y|
  name_node = make.add_element "name"
  name_node.text  = y.name
  desc_node = make.add_element "description"
  desc_node.text = y.description
end

順便說一下,您的XML結構有點奇怪。 如果將每個名稱/描述對都包裝在另一個節點(例如user )中,然后有許多用戶節點,是否會更清楚?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM