On Thu, Oct 25, 2012 at 10:26 PM, bwb <
bwba...@retrievalsystems.com> wrote:
> Using XML Builder, or some other facility, how does one emit an
> element instance that has both attributes and non-empty content?
Long story short: pass it the content, and then the attributes. (Or
the other way around, but then I think you'd have to put the
attributes in braces (since it's a hash and you'll have stuff after
it), and put parens on the call (so Ruby doesn't think the hash is a
block).)
In your case, if I correctly spotted the difference between the
current and desired outputs, what I think you want would be:
xml.eotype EoType.find(official.eotypeID).name,
eotypeID: official.eotypeID
xml.source SourceType.find(official.sourceID).name,
sourceID: official.sourceID
Or, to reduce unclear redundancy:
eo_id = official.eotypeID
xml.eotype EoType.find(eo_id).name, eotypeID: eo_id
src_id = official.sourceID
xml.source SourceType.find(src_id).name, sourceID: src_id
Or, with the attributes hash first:
eo_id = official.eotypeID
xml.eotype({ eotypeID: eo_id }, EoType.find(eo_id).name)
src_id = official.sourceID
xml.source({ sourceID: src_id }, SourceType.find(src_id).name)
Try any of these (I'd favor #2) and let me know if it gets you what you want.
-Dave
--
Dave Aronson, the T. Rex of Codosaurus LLC,
secret-cleared freelance software developer
taking contracts in or near NoVa or remote.
See information at
http://www.Codosaur.us/.