Once we get this working, I'd be only too happy to make a recipe.

We're not there yet though.

I'm not sure how the parentid aspect of the example should work - at the
moment it doesn't seem to have any function (when I removed it, nothing
obviously changed).

It seems to me that we need to somehow make hobo aware that the parentid
refers to an answer record. I'm not yet in a position to intuitively
understand how that would be done..

Another thought - given that the original acts_as_tree recipe works so
nicely, should I be considering a Single Table Inheritance solution here
?<DBA_shudder/>
We can get the desired functionality when the model is self referencing
(category has_many:categorys), but the same seems to be more difficult -
conceptually at least - with multiple model recursion.

Simeon.

On Tue, Aug 3, 2010 at 11:41 AM, Owen At Barquin <[email protected]> wrote:

> Yes, that would great. Or a github gist.
>
>
> -------------------------
> Owen Dall
> Chief Systems Architect
> Barquin International
> 410-991-0811
>
> On Aug 2, 2010, at 7:22 PM, "[email protected]" <[email protected]>
> wrote:
>
> > I bet this this look better in a pastie. Kind of hard to see the
> > format.
> >
> > On Aug 2, 2:39 pm, Owen Dall <[email protected]> wrote:
> >> Wow - nice example!
> >> -Owen
> >>
> >> On Mon, Aug 2, 2010 at 5:02 PM, Simeon Theobald
> >> <[email protected]>wrote:
> >>
> >>
> >>
> >>
> >>
> >>> Thanks Chuck - I haven't had a chance to try this out yet, but greatly
> >>> appreciate the effort you've gone to in fitting an example to my use
> case.
> >>
> >>> I'll let you know how it works out.
> >>
> >>> Simeon.
> >>
> >>> On Mon, Aug 2, 2010 at 2:44 AM, <[email protected]> wrote:
> >>
> >>>> After I wrote the acts_as_tree recipe, I wrote another tag definition
> that
> >>>> iterates over an acts_as_tree model and displays the cards of an
> associated
> >>>> has_many model.  This will not work precisely the way you want for
> your use
> >>>> case, but might spur some ideas.
> >>
> >>>> Example:
> >>
> >>>> class Question < ActiveRecord::Base
> >>>>   hobo_model
> >>>>   fields do
> >>>>     name :string
> >>>>     parent_id :integer
> >>>>   end
> >>
> >>>>   has_many :answers
> >>>>   belongs_to :answer
> >>>>   acts_as_tree
> >>>> end
> >>
> >>>> class Answer < ActiveRecord::Base
> >>>>   hobo_model
> >>>>   fields do
> >>>>     name : string
> >>>>   end
> >>>>   belongs_to :question
> >>>>   has_one :another_question_to_ask, :class_name => 'question'
> >>>> end
> >>
> >>>> In application.dryml:
> >>
> >>>> <extend tag="index-page" for="Question">
> >>
> >>>>     <old-index-page merge>
> >>
> >>>>         <after-new-link:><p><br/>Click a question to view
> >>>> answers.</p></after-new-link:>
> >>
> >>>>         <!-- Remove pager control -->
> >>
> >>>>         <top-page-nav: replace />
> >>
> >>>>         <collection: replace>
> >>
> >>>>             <hierarchical-collection with="&Question.all"
> to="answers">
> >>
> >>>>                 <append-close-button:>
> >>
> >>>>                     <a:answers action="new"
> >>>> if="&can_create?(this.answers)">
> >>
> >>>>                         <ht key="answers.actions.new">
> >>
> >>>>                             New Answer
> >>
> >>>>                         </ht>
> >>
> >>>>                     </a:answers>
> >>
> >>>>                 </append-close-button:>
> >>
> >>>>             </hierarchical-collection>
> >>
> >>>>         </collection:>
> >>
> >>>>         <!-- Remove pager control -->
> >>
> >>>>         <bottom-page-nav: replace />
> >>
> >>>>     </old-index-page>
> >>
> >>>> </extend>
> >>
> >>>> <def tag="hierarchical-collection" attrs="to">
> >>
> >>>>     <%
> >>
> >>>>         def tree_h(acts_as_tree_set, init=true, &block)
> >>
> >>>>             @@level = 1 if init
> >>
> >>>>             if acts_as_tree_set.size > 0
> >>
> >>>>                 acts_as_tree_set.collect do |item| %>
> >>
> >>>>                     <do with="&item"> <%
> >>
> >>>>                         next if item.parent_id && init
> >>
> >>>>                         @@level += 1
> >>
> >>>>                         yield item
> >>
> >>>>                         tree_h(item.children, false, &block) if
> >>>> item.children.size > 0
> >>
> >>>>                         @@level -= 1 %>
> >>
> >>>>                     </do> <%
> >>
> >>>>                 end
> >>
> >>>>             else
> >>
> >>>>                 %>(none)<%
> >>
> >>>>             end
> >>
> >>>>         end
> >>
> >>>>         tree_h(this, true) { |item|
> >>
> >>>>             item_for = to.nil? ? item : item.send(to) %>
> >>
> >>>>             <%= "<h#{@@level}>" %>
> >>
> >>>>             <a href="#"
> >>>>
> onclick="Effect.BlindDown('hierarchy-collection-#{item.typed_id.gsub(':','-
> ')}');
> >>>> return false;" param="hierarchy-link">
> >>
> >>>>             <%= item.name + ("&nbsp;(#{item_for.count})" if
> >>>> item_for.respond_to?('count')) %>
> >>
> >>>>             </a>
> >>
> >>>>             <%= "</h#{@@level}" %><%
> >>
> >>>>             if item_for.respond_to?('count') %>
> >>
> >>>>                 <div
> >>>> id="hierarchy-collection-#{item.typed_id.gsub(':','-')}"
> style="display:
> >>>> none" param="hierarchy-section">
> >>
> >>>>                     <div class="close-button" param="close-button">
> >>
> >>>>                         <a href="#"
> >>>>
> onclick="$('hierarchy-collection-#{item.typed_id.gsub(':','-')}').hide();
> >>>> return false;">close</a>
> >>
> >>>>                     </div>
> >>
> >>>>                     <collection with="&item_for" param="items" />
> >>
> >>>>                 </div><%
> >>
> >>>>             end
> >>
> >>>>         }
> >>
> >>>>     %>
> >>
> >>>> </def>
> >>
> >>>> --- On *Sat, 7/31/10, Simeon Theobald <[email protected]>*
> wrote:
> >>
> >>>> From: Simeon Theobald <[email protected]>
> >>>> Subject: Re: [Hobo Users] Multiple models in one tree?
> >>>> To: [email protected]
> >>>> Date: Saturday, July 31, 2010, 12:19 AM
> >>
> >>>> Okay - a rough outline:
> >>
> >>>> A question has many potential answers. Each answer can lead to a
> number of
> >>>> questions. An example would be:
> >>
> >>>> +Would you like Coffee or Tea?   [Question]
> >>>> - Coffee     [Answer]
> >>>>    +De-Caff or Regular?    [Question]
> >>>>      -De-Caff   [Answer]
> >>>>      -Regular   [Answer]
> >>>>      +Moccona or Nescafe    [Question]
> >>>> -Tea         [Answer]
> >>
> >>>> I can't see that recursive nesting of two trees should be a problem
> given
> >>>> that we can pass in the "parentid" (which incidentally I need to
> figure out
> >>>> how to specify differently), the problem at the moment is that I can't
> see a
> >>>> way to pass the current "id" to the alternate model's tree as a
> "parentid".
> >>
> >>>> I'd eventually like to include links to add "children", or edit/remove
> the
> >>>> current node. That functionality further complicates things in that it
> will
> >>>> involve manipulating records in the intermediary tables as well as the
> leaf
> >>>> level. Nesting sure messes with your frame of reference!
> >>
> >>>> First things first though, I need to get a tree out somehow..
> >>
> >>>> On Sat, Jul 31, 2010 at 12:43 PM, Chuck Benedict <
> >>>> [email protected] <
> http://mc/[email protected]>>wrote:
> >>
> >>>> Give me a use case and I'll be glad to add my $0.02
> >>
> >>>> Sent from my iPhone
> >>
> >>>> On Jul 30, 2010, at 5:02 AM, Simeon <[email protected]<
> http://mc/[email protected]>>
> >>>> wrote:
> >>
> >>>> The learning curve gets steep in a hurry around these parts!
> >>
> >>>> The "Hierarchies - Using acts_as_tree" recipe deals nicely with a self
> >>>> referencing model (category belongs to category) but it takes on the
> >>>> context of the model containing the call. I have yet to find reference
> >>>> to a similar solution involving multiple (nested) models.
> >>
> >>>> Is it possible, and how would I go about starting to figure it out?
> >>
> >>>> Thanks for your thoughts!
> >>
> >>>>  --
> >>>> You received this message because you are subscribed to the Google
> Groups
> >>>> "Hobo Users" group.
> >>>> To post to this group, send email to [email protected].
> >>>> To unsubscribe from this group, send email to
> >>>> [email protected]<hobousers%[email protected]>
> <hobousers%2bunsubscr...@googlegroups .com>
> >>>> .
> >>>> For more options, visit this group at
> >>>> http://groups.google.com/group/hobousers?hl=en.
> >>
> >>>>  --
> >>>> You received this message because you are subscribed to the Google
> Groups
> >>>> "Hobo Users" group.
> >>>> To post to this group, send email to [email protected].
> >>>> To unsubscribe from this group, send email to
> >>>> [email protected]<hobousers%[email protected]>
> <hobousers%2bunsubscr...@googlegroups .com>
> >>>> .
> >>>> For more options, visit this group at
> >>>> http://groups.google.com/group/hobousers?hl=en.
> >>
> >>>  --
> >>> You received this message because you are subscribed to the Google
> Groups
> >>> "Hobo Users" group.
> >>> To post to this group, send email to [email protected].
> >>> To unsubscribe from this group, send email to
> >>> [email protected]<hobousers%[email protected]>
> <hobousers%2bunsubscr...@googlegroups .com>
> >>> .
> >>> For more options, visit this group at
> >>> http://groups.google.com/group/hobousers?hl=en.
> >>
> >> --
> >> - Owen
> >>
> >> Owen Dall, Chief Systems Architect
> >> Barquin International
> >> Cell: 410-991-0811
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> "Hobo Users" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> [email protected]<hobousers%[email protected]>
> .
> > For more options, visit this group at
> http://groups.google.com/group/hobousers?hl=en.
> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "Hobo Users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<hobousers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/hobousers?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=en.

Reply via email to