# 2 layouts per .rb page

**URL:** <https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314>\
**Category:** Rails\
**Created:** [April 20, 2006, 3:32pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314 "2006-04-20T15:32:42Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 3:32pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/1 "2006-04-20T15:32:42Z")

</div>

Hi,

Is this possible

ive got layout “loggedout\_layout”, :only =\> [:login, :logout]

but I also want to do somthing like  
layout “loggedin\_layout”, :except =\> [:login, :logout]

When the second one is introduced it seems to cancel out the first  
request, any suggestions how to get around this?

Scott

---

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 3:45pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/2 "2006-04-20T15:45:10Z")

</div>

use this in your actions:

render [blah-blah], :layout =\> “bla”

---

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 3:54pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/3 "2006-04-20T15:54:25Z")

</div>

Hello Scott,

> Is this possible
> 
> ive got layout “loggedout\_layout”, :only =\> [:login, :logout]
> 
> but I also want to do somthing like  
> layout “loggedin\_layout”, :except =\> [:login, :logout]
> 
> When the second one is introduced it seems to cancel out the first  
> request, any suggestions how to get around this?

Tell me if it works :

class MyBeautifulController \< ApplicationController  
layout :determine\_layout

# …

private  
def determine\_layout  
if [:login, :logout].include?(controler.action\_name)  
“loggedout\_layout”  
else  
“loggedin\_layout”  
end  
end  
end

```
-- Jean-FranÃ§ois.
```

---

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 4:21pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/4 "2006-04-20T16:21:07Z")

</div>

> Tell me if it works :

nice idea, but im gaining this error

NameError in AccountController#list

undefined local variable or method `controler’ for  
#AccountController:0x38a7560

code

layout :determine\_layout

private  
def determine\_layout  
if [:login, :logout].include?(controler.action\_name)  
“loggedout\_layout”  
else  
“loggedin\_layout”  
end  
end

---

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 4:24pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/5 "2006-04-20T16:24:34Z")

</div>

Scott S. wrote:

> > Tell me if it works :
> 
> nice idea, but im gaining this error

> if [:login, :logout].include?(controler.action\_name)

2 'l’s in controller.action\_name

Alan

p.s. can’t you specify :only _and_ :except in the same layout line ?

---

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 4:43pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/6 "2006-04-20T16:43:37Z")

</div>

same problem again

undefined local variable or method `controller’ for  
#AccountController:0x37da8e8

RAILS\_ROOT: ./script/…/config/…  
Application Trace | Framework Trace | Full Trace

#{RAILS\_ROOT}/app/controllers/account\_controller.rb:14:in  
`determine\_layout’

In response to

> can’t you specify :only _and_ :except in the same layout line ?

totally new to ror, but I couldnt find a way to define 2 templates on  
one line

---

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 4:28pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/7 "2006-04-20T16:28:23Z")

</div>

2006/4/20, Scott S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > Tell me if it works :
> 
> nice idea, but im gaining this error
> 
> NameError in AccountController#list

sorry for the typo :

controller.action\_name

instead of

controler.action\_name

```
-- Jean-FranÃ§ois.

```

---

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 9:37pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/8 "2006-04-20T21:37:58Z")

</div>

I am still having problems with this, has anyone else got any  
suggestions?

---

<div class="post-metadata">

**Author:** ![asherwood](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c67d28/32.png) [@asherwood](https://www.ruby-forum.com/u/asherwood)\
**Post date:** [April 20, 2006, 10:01pm UTC](https://www.ruby-forum.com/t/2-layouts-per-rb-page/58314/9 "2006-04-20T22:01:57Z")

</div>

2006/4/20, scott sherwood [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> I am still having problems with this, has anyone else got any  
> suggestions?

change this line

if [:login, :logout].include?(controler.action\_name)

into :

if %w(login logout).include?(params[:action])

but it’s not very nice to me.

```
 -- Jean-FranÃ§ois.

```
