Hi there, what''s the most resource friendly way to program the following? In the VIEW, I need to show a ''nested :has_many'' structure like this: ============Author1 BookA ... ChapterX ... Page-i ... BookB ... ChapterX ... Page-i ... Author2 ... ============ I assume this means that: - Author, Book, Chapter, Page must be "collections" (@authors, @books, @chapters, @pages) - I need to have a :partial for each collection - Each :partial contains the next :partial (nested parent-child structure) My question: - Doing (for example) the query for @books directly within the ''author'' :partial (and so on) would be stupid, wouldn''t it... - So how do I need to write the database queries in the controller (in the most efficient way) for such a case? - How would this look like in the view (how to access the values)? (for example in any child :partial) Thank you very much for your help! Tom -- 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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Rob Biedenharn
2009-Mar-12 03:07 UTC
Re: How to do queries for ''nested :partial'' structures ?
On Mar 11, 2009, at 8:05 PM, Tom Ha wrote:> > Hi there, > > what''s the most resource friendly way to program the following? > > In the VIEW, I need to show a ''nested :has_many'' structure like this: > > ============> Author1 > BookA > ... > ChapterX > ... > Page-i > ... > BookB > ... > ChapterX > ... > Page-i > ... > Author2 > ... > ============> > I assume this means that: > - Author, Book, Chapter, Page must be "collections" (@authors, @books, > @chapters, @pages) > - I need to have a :partial for each collection > - Each :partial contains the next :partial (nested parent-child > structure) > > My question: > - Doing (for example) the query for @books directly within the > ''author'' > :partial (and so on) would be stupid, wouldn''t it... > - So how do I need to write the database queries in the controller (in > the most efficient way) for such a case?@authors = Author.find(:all, :include => { :books => { :chapters => :pages }}) Of course, that''s going to instantiate all the authors, books, chapters, and pages into objects in your program...> > - How would this look like in the view (how to access the values)? > (for > example in any child :partial) > > Thank you very much for your help! > Tom > --In your main view, <%= render :partial => ''author'', :collection => @authors %> In the _author.html.erb <%= render :partial => ''book'', :collection => author.books %> etc. -Rob Rob Biedenharn http://agileconsultingllc.com Rob-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Really cool! Thanks a lot, Rob! -- 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 -~----------~----~----~----~------~----~------~--~---