# Layouts

**URL:** <https://www.ruby-forum.com/t/layouts/72308>\
**Category:** Rails\
**Created:** [February 23, 2006, 1:39pm UTC](https://www.ruby-forum.com/t/layouts/72308 "2006-02-23T13:39:30Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [February 23, 2006, 1:39pm UTC](https://www.ruby-forum.com/t/layouts/72308/1 "2006-02-23T13:39:30Z")

</div>

I created a controller called reports, for which I didn’t have any model  
or tables.

I wanted to use a menu/layout structure similar to all my other  
models/controllers and added a layout named reports which then gives me  
the menu/layout structure but is also now part of all my reports.

That isn’t gonna work so I renamed reports.rhtml to reports\_forms.rhtml  
(still inside my layouts directory) and then I created a model called  
report.rb and inside it…

def forms  
render :action =\> “forms”, :layout :=\> “reports\_forms”  
def

but that doesn’t work either.

How can I have a controller or view that selectively uses a layout?

Craig

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [February 23, 2006, 1:48pm UTC](https://www.ruby-forum.com/t/layouts/72308/2 "2006-02-23T13:48:38Z")

</div>

> How can I have a controller or view that selectively uses a layout?
> 
> Craig

[http://api.rubyonrails.org/classes/ActionController/Layout/ClassMethods.html](http://api.rubyonrails.org/classes/ActionController/Layout/ClassMethods.html)

Mikkel B.

www.strongside.dk - Football Portal(DK)  
[nflfeed.helenius.org](http://nflfeed.helenius.org) - Football News(DK)  
ting.minline.dk - Buy Old Stuff!(DK)

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [February 23, 2006, 3:01pm UTC](https://www.ruby-forum.com/t/layouts/72308/3 "2006-02-23T15:01:20Z")

</div>

Use the “layout” method at the top of your controller. layout  
“layout-name”.  
For example: layout “admin”

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [February 23, 2006, 2:06pm UTC](https://www.ruby-forum.com/t/layouts/72308/4 "2006-02-23T14:06:45Z")

</div>

On Thu, 2006-02-23 at 12:46 +0000, Mikkel B. wrote:

> > How can I have a controller or view that selectively uses a layout?
> > 
> > Craig
> 
> [http://api.rubyonrails.org/classes/ActionController/Layout/ClassMethods.html](http://api.rubyonrails.org/classes/ActionController/Layout/ClassMethods.html)

* * *

I have been looking at that page and recited the changes I made after  
looking at that page and can’t figure it out.

Thanks

Craig

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [February 23, 2006, 3:19pm UTC](https://www.ruby-forum.com/t/layouts/72308/5 "2006-02-23T15:19:39Z")

</div>

I got it…if I use

render :action =\> “forms”, :layout =\> “reports\_forms” as the very last  
line in the method, it all works

Thanks

Craig

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [February 23, 2006, 3:13pm UTC](https://www.ruby-forum.com/t/layouts/72308/6 "2006-02-23T15:13:30Z")

</div>

That works the same as if I have a layout with the same name as the  
controller - I am trying to selectively have a layout in some methods in  
my reports\_controller (the screen forms), but not on those that are  
destined to be printed.

Craig
