# Redirecting From default page

**URL:** <https://www.ruby-forum.com/t/redirecting-from-default-page/142220>\
**Category:** Rails\
**Created:** [July 4, 2008, 6:34pm UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220 "2008-07-04T18:34:33Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 4, 2008, 6:34pm UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/1 "2008-07-04T18:34:33Z")

</div>

Hi. I am new to Rails. I am doing a web project for my school. It has  
models like Page, Student and Forum. Page model is for creating pages  
like home page, help, contact, about, feedback, etc. My route has my  
home page as :controller =\> “pages”, :action =\> “show”, :id =\> “1”.  
Students have registrations to access and use the forum. I am using a  
cookie based session storage. How can i redirect the student to the  
forums index which is :controller =\> “forums”, :action =\> “index”  
instead of home page even when he types the home page  
address([www.homepage.com](http://www.homepage.com)), if he had already logged in and had set  
Remember my password.

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 4, 2008, 8:30pm UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/2 "2008-07-04T20:30:56Z")

</div>

Sounds like you need a show-action-specific before\_filter for your Pages  
controller:

before\_filter :redirect\_to\_forums, :only =\> [:show]

def redirect\_to\_forums  
if logged\_in? # you will need to define this  
redirect\_to :controller =\> “forums” # index action is implied  
end  
end

Anna Lissa

On Fri, Jul 4, 2008 at 9:34 AM, Rock R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 4, 2008, 8:35pm UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/3 "2008-07-04T20:35:21Z")

</div>

AnnaLissa C. wrote:

> Sounds like you need a show-action-specific before\_filter for your Pages  
> controller:
> 
> before\_filter :redirect\_to\_forums, :only =\> [:show]
> 
> def redirect\_to\_forums  
> if logged\_in? # you will need to define this  
> redirect\_to :controller =\> “forums” # index action is implied  
> end  
> end
> 
> Anna Lissa
> 
> On Fri, Jul 4, 2008 at 9:34 AM, Rock R.  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

Thank you for your reply.  
But i have a help page of route :controller=\> “pages”, :action =\>  
“show”, :id =\> “2”, a contact page with route :controller=\> “pages”,  
:action =\> “show”, :id =\> “3” and so on. What will happen to the show  
action for those links if the user has logged in

---

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 4, 2008, 8:46pm UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/4 "2008-07-04T20:46:12Z")

</div>

I see. It’s not very pretty but you can do this instead (with no  
before\_filter):

def show  
if params[:id] == 1 && logged\_in?  
redirect\_to :controller =\> “forums”  
return  
end

# rest of your action definition

end

On Fri, Jul 4, 2008 at 11:35 AM, Rock R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 4, 2008, 8:48pm UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/5 "2008-07-04T20:48:49Z")

</div>

AnnaLissa C. wrote:

> I see. It’s not very pretty but you can do this instead (with no  
> before\_filter):
> 
> def show  
> if params[:id] == 1 && logged\_in?  
> redirect\_to :controller =\> “forums”  
> return  
> end
> 
> # rest of your action definition
> 
> end
> 
> On Fri, Jul 4, 2008 at 11:35 AM, Rock R.  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

Oh. I got it. Thanks Anna for your help.

---

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 5, 2008, 6:59am UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/6 "2008-07-05T06:59:54Z")

</div>

In that case, you probably would be better off having your homepage  
route  
being

map.root :controller =\> “pages”

then in your PagesController:

def index  
if params[:id] == 1 && logged\_in?

> > ```
> > redirect_to :controller => "forums"
> > return
> > 
> > ```
> > 
> > end  
> > @page = Page.find(1)  
> > render :action =\> :show  
> > end

On Fri, Jul 4, 2008 at 9:28 PM, Rock R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 5, 2008, 6:28am UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/7 "2008-07-05T06:28:35Z")

</div>

Rock R. wrote:

> AnnaLissa C. wrote:
> 
> > I see. It’s not very pretty but you can do this instead (with no  
> > before\_filter):
> > 
> > def show  
> > if params[:id] == 1 && logged\_in?  
> > redirect\_to :controller =\> “forums”  
> > return  
> > end
> > 
> > # rest of your action definition
> > 
> > end
> > 
> > On Fri, Jul 4, 2008 at 11:35 AM, Rock R.  
> > [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> Oh. I got it. Thanks Anna for your help.

I have another doubt. I have a navigation bar available to all  
controllers of the site with links Home, Help ,Contact,etc. So if i  
click Home, then won’t I be redirected to forums?

---

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 5, 2008, 7:02am UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/8 "2008-07-05T07:02:15Z")

</div>

oops, fat-fingered that. 🙂 I meant:

def index  
if logged\_in?  
redirect\_to :controller =\> “forums”  
return  
end  
@page = Page.find(1)  
render :action =\> :show  
end

hope that helps

a.l.

---

<div class="post-metadata">

**Author:** ![rocknrollcar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@rocknrollcar](https://www.ruby-forum.com/u/rocknrollcar)\
**Post date:** [July 5, 2008, 7:06am UTC](https://www.ruby-forum.com/t/redirecting-from-default-page/142220/9 "2008-07-05T07:06:24Z")

</div>

AnnaLissa C. wrote:

> oops, fat-fingered that. 🙂 I meant:
> 
> def index  
> if logged\_in?  
> redirect\_to :controller =\> “forums”  
> return  
> end  
> @page = Page.find(1)  
> render :action =\> :show  
> end
> 
> hope that helps
> 
> a.l.

Thank you
