I am trying to code a helper that will print a list of threaded forums,
as options of a select field...a forum has a parent_id (which is another
forum''s id) or 0, meaning it is a "root level" forum...
For example, the result will look like:
Forum 1
--Sub forum 1
--Sub forum 2
----Sub Sub Forum 1
--Sub forum 3
Forum 2
--Sub forum 2a
...
(picture this in a select menu)
There can be an unlimited amount of nested forums...my first thought was
to use a recursive function, however, since an helper will only
"print"
what it returns (and should only return 1 thing) it''s a bit tricky... I
don''t really see an easier way to this, but anyway here''s what
I have so
far:
----------------------
def print_child_forums(master)
#get the forum''s childs...
childs = Forum.find(:all, :conditions => ["parent_id = ?",
master.id], :order => ''name ASC'')
if childs.size > 0 #forum has subforums
#Here, I need to print this forum before going deeper!
for child in childs
print_child_forums(child)
end
else
#forum has no child, print it...
"<option
value=\"#{master.id}\">#{master.name}</option>"
end
end
-------------------------
The problem obviously is that when a forum has child, it is never
printed! since the only "return point" of the function occurs when the
forum has no child... from what I understand, I can''t output any html
in
the helper function, except with it''s return value... and I
can''t really
use string concatenation since the function is being called multiple
times (recursivity)...
my idea basically(using pseudo code) was quite simple:
print_childs(master):
if master has childs
print master
for each child:
print_childs(child) (recursivity)
end for
else (master has no child)
print master
end if master has childs
end print_childs
But this is turning out to be trickier than I thought... Note that I
might be going at it all wrong, it''s 5am+ and I''m trying to
get this
done before going to bed...and somehow, I doubt I am thinking clearly
LOL....
Any suggestions would be appreciated!
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---