.to_xml on an index, custom set response by Object


#1

I have a Contacts controller, that I’m using to output contacts when
an index is called, but the XML that I will output for each contact
varies. I’m not having any success using :proc or :method

:method could work, but the string my method returns, escapes the <>
characters I’m using trying to “fake” XML mark-up.

Basically, each contact has many Kvs, and I only want to :include
output some KV (not all) for each contact. I can :include kvs but that
will include ALL. I cannot used proc, because there’s no way for proc
to “know” which individual contact it’s being run for.

Can anyone recommend an easy way around this?

–matt


#2

On Feb 26, 9:28 am, MattFS218 removed_email_address@domain.invalid wrote:

to “know” which individual contact it’s being run for.
It seems like the easiest way would be a method that calls to_xml on
those kvs you want included. Not sure what you meant about fake xml
mark-up in your comment above. Another way might be to :include an
association whose conditions restrict it to those Kvs you are
interested in.

Fred

Fred


#3

Hey Fred,

Thanks for the rapid response.

But when I

format.fxml { render :fxml => @contacts.to_fxml(:methods=>
[:my_action] ) }

and

def my_action()
return self.kvs.to_xml
end

the resulting XML has the < and > symbols escaped out <?xml
version="1.0"

Unless I’m mistaken, but associations are per Object, correct? Not per
instance. the Kvs i’m trying to output vary per instance. Any other
recommendations?

–matt

On Feb 26, 4:45 pm, Frederick C. removed_email_address@domain.invalid


#4

On Feb 26, 10:08 am, MattFS218 removed_email_address@domain.invalid wrote:

def my_action()
return self.kvs.to_xml
end

the resulting XML has the < and > symbols escaped out <?xml
version="1.0"

Oh I get you.

Unless I’m mistaken, but associations are per Object, correct? Not per
instance. the Kvs i’m trying to output vary per instance. Any other
recommendations?
You can have interpolated conditions on an association (but this does
rely on you being able to express your conditions in sql, prevents
eager loading etc…). Another way is a custom to_xml method on your
model, you’ll get a Builder::XmlMarkup object given to you on which
you can generate any xml you want

Fred


#5

is it possible to get a quick example of how to override .to_xml?, and
maybe add a little bit of markup?

On Feb 26, 5:16 pm, Frederick C. removed_email_address@domain.invalid


#6

On 26 Feb 2009, at 10:37, MattFS218 wrote:

is it possible to get a quick example of how to override .to_xml?, and
maybe add a little bit of markup?

THere’s an example in the documentation for to_xml.

Fred


#7

The doc’s give an example of entirely overwriting the output. All I
really wanna do is append another tag. I’ve tried using various
combinations of super, but super is returning a string. Is it possible
then, at least to get an example of how to override xml using super,
and appending a tag? I’ve been working on this for the past 3 hrs. Any
help would be greatly appreciated.

–matt

On Feb 26, 6:00 pm, Frederick C. removed_email_address@domain.invalid