Redirecting From default page

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), if he had already logged in and had set Remember my password.

Thanks in advance.

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

AnnaLissa Cruz 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 Roll <rails-mailing-list@andreas-s.net>

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

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

AnnaLissa Cruz 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 Roll <rails-mailing-list@andreas-s.net>

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

Rock Roll wrote:

AnnaLissa Cruz 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 Roll <rails-mailing-list@andreas-s.net>

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?

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

oops, fat-fingered that. :slight_smile: 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.

AnnaLissa Cruz wrote:

oops, fat-fingered that. :slight_smile: 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