我需要您對to_xml函數的幫助。當從活動記錄導出到xml時,如何將所有nil =「True」值設置爲默認值''(空白)。Ruby on Rails to_xml nil =「True」
0
A
回答
3
的#to_xml
方法Rails添加到ActiveRecord
,Array
和Hash
默認使用builder
寶石。該XML也通過ActiveSupport::XmlMini
,其中nil="true"
屬性的添加總是爲nil
屬性添加hard coded。
如果這些值有問題,您應該查看using builder
directly來構建您的XML。
Builder::XmlMarkup.new.object{|xml| xml.value "" }
#=> "<object><value></value></object>"
您也可以使用其他XML庫。我只推薦builder
,因爲它是默認的rails並且可能已經安裝。
另一種選擇是將對象首先轉換爲Hash
(object.attributes
作品如果object
是ActiveRecord
實例)。然後,您可以將任何nil轉換爲空白字符串。
data = object.attributes
data.each_pair{|col, val| data[col] = "" if val.nil? }
data.to_xml
0
您可以添加一個方法來爲XML生成設置特殊的默認值。然後可以通過重寫to_xml
方法來調用此方法,該方法在內存中複製記錄,設置默認值並最終生成xml。示例代碼:
class Post < ActiveRecord::Base
def set_xml_defaults
blanks = self.attributes.find_all{|k,v| v.nil? }.map{|k,v| [k,''] }
self.attributes = Hash[blanks]
end
alias_method :to_xml_no_defaults, :to_xml
def to_xml(options = {}, &block)
dup = self.dup
dup.set_xml_defaults
dup.to_xml_no_defaults
end
end
相關問題
- 1. Ruby on Rails ENV ['RAILS_ENV']返回nil
- 2. Ruby on Rails 4 - config.consider_all_requests_local = true生產
- 3. ruby on rails - sessions
- 4. nil不能被強制轉換成BigDecimal - Ruby On Rails
- 5. LocalJumpError(Ruby on Rails)
- 6. Ruby on Rails - redirect_to
- 7. CMS on Ruby on Rails
- 8. ruby on rails form_for
- 9. 爲什麼在Ruby on Rails 3中返回Nil?
- 10. Ruby和Rails或Ruby on Rails
- 11. ruby on rails css
- 12. 在Ruby中,爲什麼!nil return => true?
- 13. Ruby on Rails UrlGenerationError
- 14. Rails數組to_xml
- 15. Ruby與Ruby On Rails
- 16. OpenTok Ruby On Rails
- 17. ruby on rails查詢
- 18. Ruby on Rails - ApplicationController
- 19. 關於Rails的 「to_xml()」
- 20. Ruby on Rails fullcalendar-rails
- 21. Ruby on Rails UJS
- 22. Boxy.js,XHR,Ruby on Rails
- 23. Ruby On Rails錯誤無法將Nil轉換爲字符串
- 24. Ruby on Rails - 無法將nil轉換爲字符串
- 25. 在Ruby on Rails中檢查nil在視圖中
- 26. Ruby on Rails Partial Locals
- 27. Ruby on rails MYSQL查詢
- 28. Ruby on rails console
- 29. OCIError(ruby on rails)
- 30. Friendly_ID Ruby on Rails