Hi,
I know this can be done much cleaner and with prettier code…but I
was having trouble getting my head around doing it with collect.
“infobar_link” creates hyperlinks - it takes a 1st parameter of a
string denoting a lookup value, and an optional second string
parameter for the link text.
So “infobar_sites” is a list of sites I want to create links to, and
as you can see they can either be just a lookup value (single string),
or an array with the lookup and a title to override the default. Then
I just enumerate thru and create a list of the links.
infobar_sites = [ [“usmarket”, “The Market”],
“internet”,
[“etf”, “ETFs”],
“china”,
“energy”,
[“ce”, “Electronics”],
“media”,
“gold”,
“telecom”,
“biotech”,
“retail”,
“japan”,
“india” ]
output = “”
infobar_sites.each do |args|
link = nil
if args.is_a? String
link = infobar_link(args)
else
link = infobar_link(args[0], args[1])
end
output += “
#{ link }”
end
output
any help greatly appreciated…
thanks
How about something like this:
infobar_sites = [ [“usmarket”, “The Market”],
“internet”,
[“etf”, “ETFs”],
“china”,
“energy”,
[“ce”, “Electronics”],
“media”,
“gold”,
“telecom”,
“biotech”,
“retail”,
“japan”,
“india” ]
def infobar_link(*args)
“
#{args.join(’, ')}”
end
puts infobar_sites.map { |m| infobar_link(*m.to_a) }
Which outputs
usmarket, The Market
internet
etf, ETFs
china
energy
ce, Electronics
media
gold
telecom
biotech
retail
japan
india
Tom
On 7/26/06, Tom W. [email protected] wrote:
"telecom",
telecom
> I know this can be done much cleaner and with prettier code...but I
>
> "biotech",
> end
–
Tom W.
Helmets to Hardhats
Software Developer
[email protected]
www.helmetstohardhats.org
Hm, I think that will work, I’ll just have to change the infobar_link
to use variable args. Right now its signature is this:
def infobar_link(slug, link_text = nil)
if link_text is nil, get a default from the db record found via slug
…
So I suppose I could change it to just test like this:
def infobar_link(*args)
if args[1] # use the supplied link_text, else is must be nil so use
the default
# …
thanks …just kinda thinking out loud here.