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 + (" (#{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]> >> . >> 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]<hobousers%[email protected]> > . > 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]. For more options, visit this group at http://groups.google.com/group/hobousers?hl=en.
