# Layout switching and varialbes

**URL:** <https://www.ruby-forum.com/t/layout-switching-and-varialbes/124784>\
**Category:** Rails\
**Created:** [January 2, 2008, 5:21pm UTC](https://www.ruby-forum.com/t/layout-switching-and-varialbes/124784 "2008-01-02T17:21:34Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![adam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4af34b/32.png) [@adam](https://www.ruby-forum.com/u/adam)\
**Post date:** [January 2, 2008, 5:21pm UTC](https://www.ruby-forum.com/t/layout-switching-and-varialbes/124784/1 "2008-01-02T17:21:34Z")

</div>

I have a problem with a function, I tried to achieve a layout  
switching according to the user level that’s logged in  
(session[:user\_level] )  
the function looks like this

def switch\_layout  
case session[:user\_level].to\_i  
when 3 : render :layout=\> ‘admin’  
when nil : render :layout=\> ‘application’  
else render :layout=\> ‘nonadmin’  
end  
end

The problem that i have when i use a function like list which uses a  
variable @users = User.find(:all)

You have a nil object when you didn’t expect it!  
You might have expected an instance of Array.  
The error occurred while evaluating nil.each

In the view there is

\<% for user in @users -%\>

I don’t know why this is happening …  
Any ideas?

---

<div class="post-metadata">

**Author:** ![adam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4af34b/32.png) [@adam](https://www.ruby-forum.com/u/adam)\
**Post date:** [January 3, 2008, 12:13am UTC](https://www.ruby-forum.com/t/layout-switching-and-varialbes/124784/2 "2008-01-03T00:13:20Z")

</div>

Because you’re calling render, anything you define thereafter will not  
really be defined in the code.

Try calling just layout :admin instead.

On Jan 3, 2008 2:50 AM, Adam [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> else render :layout=\> ‘nonadmin’  
> In the view there is
> 
> \<% for user in @users -%\>
> 
> I don’t know why this is happening …  
> Any ideas?
> 
> >

–  
Ryan B.

> **[frozenplague.net](http://www.frozenplague.net)**
>
> This domain may be for sale!

Feel free to add me to MSN and/or GTalk as this email.

---

<div class="post-metadata">

**Author:** ![adam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4af34b/32.png) [@adam](https://www.ruby-forum.com/u/adam)\
**Post date:** [January 4, 2008, 8:47pm UTC](https://www.ruby-forum.com/t/layout-switching-and-varialbes/124784/3 "2008-01-04T20:47:27Z")

</div>

Yep that was it 🙂  
Thanks

---

<div class="post-metadata">

**Author:** ![adam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4af34b/32.png) [@adam](https://www.ruby-forum.com/u/adam)\
**Post date:** [January 4, 2008, 9:01pm UTC](https://www.ruby-forum.com/t/layout-switching-and-varialbes/124784/4 "2008-01-04T21:01:37Z")

</div>

OK I remembered why I used ‘render :layout’, the problem was that  
before\_filter didn’t worked when i called ‘layout’ inside of it…  
now i made just layout :switch\_layout.  
Thanks for the reply.
