Perhaps what you're after is something like nested_layouts: http://github.com/Radar/nested-layouts/tree/masters .
----- Ryan Bigg Freelancer http://frozenplague.net On 02/10/2008, at 10:49 AM, Garrett Berneche wrote: > > I have seen his website before, but the videos don't play on my > computer. Recently my computer just started having some problems with > video files and I haven't taken the time to figure out the problem. > Regardless I think I have pieced together something decent, kind of a > cross between methods 3 and 4. The only thing that kinda still bugs > me is needing a no_sublayout.html.erb. I have been trying in vain to > find a why to get the the main_layout to choose between > yield :sublayout or yield :layout. It looks like this... > > views/layouts/main_layout.html.erb > some html > <%= yield :sublayout %> > some html > > > views/items/index.html.erb > render :partial => "item", :collection => @items > > > views/items/_item.html.erb > <%= h item.name $> > > > views/layouts/sublayout.html.erb > <% content_for sublayout do -%> > some html > <%= yield %> > some html > <% end -%> > render :file=>"layouts/main_layout.html.erb" > > > views/layouts/no_sublayout.html.erb > <% content_for sublayout do -%> > <%= yield %> > <% end -%> > render :file=>"layouts/main_layout.html.erb" > > controllers/items_controller.rb > layout :choose_layout > normal controller stuff > private > def choose_layout > if action_name == "index" "sublayout" > else "no_sublayout" > end > end > > > now on to the next iteration...i am using this with nested resources > and would like to keep nesting more sublayouts, hahaha. > G > > > On Oct 1, 5:46 pm, THEBIGO <[EMAIL PROTECTED]> wrote: >> Have you checked out Ryan Bates railscasts - you might >> tryhttp://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 [email protected] 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 -~----------~----~----~----~------~----~------~--~---

