XML Builder

my code looks like this:
xml.instruct!
xml.county(name: @jurisdiction.name, id: @jurisdiction.jurisdictionID)
do
xml.officials do
@officials.each do |official|
xml.official do
xml.firstname official.firstname
xml.lastname official.lastname
xml.eotypeID eotypeID: official.eotypeID
xml.eotype EoType.find(official.eotypeID).name
xml.sourceID sourceID: official.sourceID
xml.source SourceType.find(official.sourceID).name
end
end
end
end

which produces this:

Hector Someone Primary State Web S. Lucy Someone-Else Registration History

I would like to change it to produce this:

Hector Someone Primary Web S. Lucy Someone-Else Registration History

I cannot find any documentation or examples on the point. Can someone
offer
a helpful hint or point to some useful documentation that covers the
subject, where the primary point is this: Using XML Builder, or some
other
facility, how does one emit an element instance that has both attributes
and non-empty content? There are losts of ways to do it with brute
force;
just trying to find an “elegant” solution.

Thanks for any suggestions

My previous post on this question had an error in the resired target
description. Here is it aagain; apologies for any confusion:

my code looks like this:
xml.instruct!
xml.county(name: @jurisdiction.name, id: @jurisdiction.jurisdictionID)
do
xml.officials do
@officials.each do |official|
xml.official do
xml.firstname official.firstname
xml.lastname official.lastname
xml.eotypeID eotypeID: official.eotypeID
xml.eotype EoType.find(official.eotypeID).name
xml.sourceID sourceID: official.sourceID
xml.source SourceType.find(official.sourceID).name
end
end
end
end

which produces this:

Hector Someone Primary State Web S. Lucy Someone-Else Registration History

I would like to change it to produce this:

Hector Someone Primary Web S. Lucy Someone-Else Registration History

I cannot find any documentation or examples on the point. Can someone
offer
a helpful hint or point to some useful documentation that covers the
subject, where the primary point is this: Using XML Builder, or some
other
facility, how does one emit an element instance that has both attributes
and non-empty content? There are losts of ways to do it with brute
force;
just trying to find an “elegant” solution.

Thanks for any suggestions

On Thu, Oct 25, 2012 at 10:26 PM, bwb [email protected]
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 A., 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/.

Dave,

You nailed it. Either way works fine. I could not find a reference
with the grammar explained as you do below, at least not in the specific
XML Builder context.

Thanks.
Page

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs