Urban Hafner
8/30/2007 11:27:00 AM
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Aug 30, 2007, at 12:35 , John Butler wrote:
> My question is there a more elegant way to this? I dont want to
> have to
> write an if/case statment for every possible element. I did try the
> below but that gave me an error on the nil? because it couldnt find
> the
> element to test if it was nil, thats why im suprised the above code
> works.
>
> !element.elements["Client"].nil ? project.client =
> element.elements["Client"].text : project.client = nil
I have no idea of REXML but you are missing a ? here. The one present is
the one of the ?: operator, but you need the .nil? method and not the
nil method so you have to add a second one.
And if everything works like the above (i.e. the XML Tag has the same
name as the model attribute) then you could use something like this
(untested of course) and maybe stick it into a method:
e = "Client"
meth = "#{e.downcase}=".to_sym
text = !element.elements[e].nil? ? element.elements[e].text : nil
project.send(meth, text)
Urban
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (Darwin)
iD8DBQFG1qlsggNuVCIrEyURAp38AJ4y76fXMtYgKRA60ovmpdz0kuXt6QCfbtqr
2SBTn6C4TlP/iCdQt14WJXI=
=YWwN
-----END PGP SIGNATURE-----