Nested Layouts in Rails


I was wondering how to keep the layouts in my rails application code DRY – I was close to the point of kicking myself for having to make changes to all my layouts whenever something standard changed – so i researched online and found the above diagram by Matt McCray in his blog.

I used Matt’s method for nesting layouts, but instead of defining a method called sub_layout in my controllers, I called a pre-defined rails controller method:

< % render :partial => “layouts/#{controller.controller_name}” %>

and defined a partial layout named after every controller I had, which had different settings for their own views. Rails has a local variable called ‘controller’ you can use to access its controller’s name and even the action used for the current view. So using this, I don’t have to define additional methods in my controllers, nor use any plugins.

kudos to Matt for coming up with this in the first place. Thanks!

No comments yet.

Leave a Reply