Rails ROUTING map.root

Is it possible to put an if/else statemnt, and change the map.root
under each condition? for ex–

if current_user
map.root :controller => ‘current_user’

else

map.root :controller => ‘home’

end

cuase apparenlty that doesn’t work, so is there an alternative way?
basically if the user is logged in, i dont want the homepage to be the
homepage anymore, but instead the user page.

NOTE:::: i can’t do a redirect_to in my home controller, because i
have multiple cases (current_user, current_admin, etc) and i can’t
have multiple redirects in an action.

so is there a way to change the homepage according to who’s logged in?
Thanks

Hi David,

Your conditional routing won’t work because routes.rb is evaluated on
startup not per request.

I don’t understand the rest of the question. You can’t redirect
multiple times per action but you can have multiple possible redirects
in an action as long as only one is executed - does that help?

/Ritchie

Hi,
During processing of request first it executes routes. so, it’s not
possible to add above type of conditional statement (authentication).
For conditional routing refer -
http://www.buildingwebapps.com/articles/7082-enhancing-conditional-routing-in-rails

Ritchie,

you wrote “You can’t redirect
multiple times per action but you can have multiple possible redirects
in an action as long as only one is executed”

so how do i do that? An if/else statment doesn’t work in this case, is
there another way?

right, i understand…thats what i did

heres my code-

if current_user

redirect_to current_user_path

elseif current_admin

redirect_to current_admin_path

elseif current_secretary
redirect_to current_secretary_path

else
@greeting = “Hello Guest”
end

but its saying that i have multiple rediects per action, and i do, but
apparently rails thinks all of them will get executed? thats my
error :-\

any suggestions? thanks

On May 5, 1:08 am, David Z. [email protected] wrote:

Ritchie,

you wrote “You can’t redirect
multiple times per action but you can have multiple possible redirects
in an action as long as only one is executed”

so how do i do that? An if/else statment doesn’t work in this case, is
there another way?

Well in a nutshell

if current_user
redirect_to user_path(current_user)
else
redirect_to home_path
end

(assuming the existance of various named routes)

Show us what you’ve attempted.

Fred