私はacts_as_treeを使用するActiveRecordクラスを持っています。to_xmlメソッドを更新して、子レコードのto_xmlが呼び出された場合に、親/祖先xmlにネストされたxmlを返し、そのリソースへの完全修飾パスを提供するようにしようとしています。例として、Compiler/Versionの親であるCompilerがあります。コンパイラはxmlとしてレンダリングする必要があります。
コンパイラ/バージョンは次のようにレンダリングする必要がありますが
full_qualifiedフラグを渡すことでこれを実行しようとしましたが、「Builder :: XmlMarkup#to_aryはArrayを返す必要があります」で終了します。
def to_xml(options = {}、&block)options [:fully_qualified] || = true options [:indent] || = 2 options [:builder] || = Builder :: XmlMarkup.new(:indent => options [:インデント])
if options[:fully_qualified] and not parent.nil?
55:parent.to_xml(options)do | foo | Relative_options = options.dup Relative_options [:fully_qualfied] = false Relative_options [:skip_instruct] = true relative_options.delete(:builder)
foo << to_xml(relative_options)
end
else
xml = options[:builder]
xml.instruct! unless options[:skip_instruct]
66:xml.parameter(:name => name、&block)end end
このメソッドは、コンパイラの場合は正常に機能しますが、コンパイラ/バージョンの場合は失敗します。
/usr/lib/ruby/1.8/builder/xmlbase.rb:133:in method_missing'
/usr/lib/ruby/1.8/builder/xmlbase.rb:133:in
call' _nested_structures'
/usr/lib/ruby/1.8/builder/xmlbase.rb:57:in
/usr/lib/ruby/1.8/builder/xmlbase.rb:133:in method_missing' app / models / parameter.rb:66:to_xml'
app/models/parameter.rb:55:in
to_xmlで'