3
好吧,我知道你可以重寫to_xml方法來獲取單個ActiveRecord對象的實例,它對我來說工作得很好。但是,我將如何去覆蓋to_xml方法來收集對象?爲集合ActiveRecord對象重寫to_xml
假設對於任務模型實例,我實現了to_xml,它看起來像這樣。
def to_xml
super(:methods => [:tag_list], :include => {:project => {:include => {:folder => {}}}, :folder => {}})
end
將單個任務序列化爲xml時工作得很好。但是,當我的代碼在下面的代碼段用於任務的收集運行時,像
render :xml => @tasks.to_xml
我得到
wrong number of arguments (1 for 0)
/home/chirantan/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/array/conversions.rb:189:in `to_xml'
/home/chirantan/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/array/conversions.rb:189:in `to_xml'
/home/chirantan/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/array/conversions.rb:189:in `each'
/home/chirantan/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/array/conversions.rb:189:in `to_xml'
/var/lib/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `call'
/var/lib/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `_nested_structures'
/var/lib/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:58:in `method_missing'
/var/lib/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:31:in `tag!'
/~/blah/app/controllers/tasks_controller.rb:412:in `completed'
如何使這項工作?
render :xml => @tasks
是否render方法不能自動拿起你的精雕細琢to_xml:
哎呀。我知道這一點,這將無法正常工作:)這是一種解決方法。我希望將對象集合視爲要序列化的對象。如果你看一下'render:xml => @ tasks'的樣子並將其與你的解決方案進行比較,你就會知道。 – Chirantan 2010-04-23 15:48:47