Don't use components! http://glu.ttono.us/articles/2006/08/30/guide-things-you-shouldnt-be-doing-in-rails Also this really should be on the Rails list. On 11/9/06, Kev <griffin.kev / gmail.com> wrote: > 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 > > > -- Giles Bowkett http://www.gilesgoatboy.org