Have you checked out Ryan Bates railscasts - you might try http://railscasts.com/episodes/7-all-about-layouts He also has some other ones on layouts. His railscasts are great Owen
On Oct 1, 10:32 am, Garrett Berneche <[EMAIL PROTECTED]> wrote: > I don't know why I though the third method worked...anyway, a little > tweaking gives me this, which does work. Instead of the content_for I > pass a rendered collection into _sublayout as a local variable named > content. > > 4) > layout.html.erb > <html> > <head>head stuff</head> > <body> > some stuff > <%= yield %> > some stuff > </body> > </html> > > index.html.erb > <%= render :partial =>"sublayout", :locals => { :content => > (render :partial => "item", :collection => @items) } -%> > > _sublayout.html.erb > some stuff > <%= content %> > some stuff > > _item.html.erb > <%= h item.name %> > > On Oct 1, 1:04 pm, Garrett Berneche <[EMAIL PROTECTED]> > wrote: > > > I have a nice layout for my app, but for some actions I want to use a > > shared sub layout. Anyone have ideas what the best practice would > > be? I have a method that works, but I am not sure if it is the 'rails > > way' of doing things, anyone care to critique it? I have tried the > > following... > > > 1) making my action template call > > render :partial, :collection, :layout. The good new here is that it > > wraps the layout around the whole collection (not around each item in > > the collection) and doesn't blow away my main layout. The bad news is > > the sub-layout and collection are repeated as many times as there are > > items in the collection. This seems like a rails bug. The layout > > should be applied once around the whole collection, or once for each > > item in the collection, not both. > > > 2) applying a layout to the render :action in the controller. This > > blows away my main layout. This is because i am rendering a template, > > not a partial, right? > > > 3) using content_for to define a sub-layout. this works, but I feel > > like there should be an easier way. i am also not sure yet what would > > happen when i don't want a sub-layout. I guess I could make a > > _no_sub_layout.html.erb that just yields, or put the content all > > inside of the content_for block...I have a few other ideas too. One > > possible benefit is that I think you could keep nesting sub-layouts > > pretty easily if you wanted. Here is a simplified version of this > > solution. > > > layout.html.erb > > <html> > > <head>head stuff</head> > > <body> > > some stuff > > <%= yield :sublayout %> > > some stuff > > </body> > > </html> > > > index.html.erb > > <% content_for :sublayout do -%> > > <%= render :partial =>"sublayout" %> > > <% end -%> > > > <% for item in @collection do -%> > > <%= render :partial => "item" -%> > > <% end -%> > > > _sublayout.html.erb > > some stuff > > <%= yield %> > > some stuff > > > _item.html.erb > > <%= h item.name %> --~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---