Thanks guys,

I shall look into components, and when I have more time (I'm currently
at work!) digest Gustav's post more fully, although from my shaky
outline you seem to understand very well what I wish to do!

Gustav Paul wrote:
> Kev wrote:
> > Hi all,
> >
> Hey
> > I am building a site, and I wish to populate the navigation dynamically
> > from a MySQL db table, and the page content from a different table.
> >
> > The idea being I can have the navigation on every page
> It sounds like this is the kind of thing you'd want in your layout, or,
> if you're using more than one layout, the navigation should be in a
> partial that you could then render in each of the particular layouts...
> > , and use
> > different controllers to select different content depending on what is
> > needed.
> >
> I'm not quite sure what you mean, but 'content' usually refers to the
> views that get rendered by the actions in your controllers...So
> 'depending on what's needed' usually means you have seperate views for
> your different actions.
> > example:
> > The Event page content comes from a page table where id = someValue
> > but I also need some events, they come from the events table.
> >
> This sounds like you've a view that should look as follows...?
>
> <div id="page_content">
>   <%= Page.find_by_controller_and_action("event", "list").page_content %>
> </div>
> <div id="event_list">
>   <%= Event.find(:all, :order => 'created_at desc', :limit => 20).each
> do |event| %>
>     <!-- do something with 'event', eg. -->
>     <div id="event_<%=event.id%>">Title: <%=event.title%> </div>
>   <% end %>
> </div>
>
> Assuming you're keeping the page content in a table called pages with
> atleast four columns: id, controller and action (which together specify
> which action in which controller should have the text rendered in the
> view for) and page_content, which contains the actual page content. I'm
> assuming since you want to display a list of events, you're rendering
> the 'list' action in an event_controller (I'm guessing here :] ). The
> previous post suggested getting this kind of data in your controller and
> pass it to this view as instance variables, this is better practice.
>
> The second part of the code will get the last 20 events and display
> their titles.
> > I am confused how to put all the pieces together in one page.
> >
> I hope the above code helps. I'm almost 100% sure I don't understand
> what you want fully, if you'd care to elaborate a little bit more I'd be
> happy to help you as best I can.
> > Could anyone point me in the right direction?
> >
> >
> The right direction is undoubtedly on the Rails Mailing List :]
> rubyonrails-talk / googlegroups.com
>
> The previous post suggested components,
> Some people believe they are evil ... It's your call though :] If you're
> using components, you most likely want to be using partials instead, but
> that's a 100% IMHO!
> http://glu.ttono.us/articles/2006/08/30/guide-things-you-shouldnt-be-doing-in-rails
> The basic idea is that using a component is like calling a new action,
> with rendered view etc, so unless you want to include an entire other
> view that already lives elsewhere in your app, use a partial
> instead...if of course that is the case, then using a component is perfect.
> 
> Anyway, Cheery-O
> Gustav Paul
> gustav / rails.co.za