2010-03-15 60 views
3

我試着讓我的rails應用程序的登錄頁面看起來像「www.domain.com」,當你登錄你仍然位於域名「www.domain.com 」。有沒有一種方法可以使用路線將2個不同的動作映射到相同的網址。 Twitter是這樣做的,你在twitter.com上登錄,登錄後你仍然位於twitter.com。2頁使用軌道路線使用相同的網址

回答

0

成功登錄後重定向到根URL。

的routes.rb

map.resources :landings 
# let's assume that, home page corresponds to landings/index 
map.root :controller => "landings", :action => "index" 

UserSessionsController

def create 
    @user_session = UserSession.new(params[:user_session]) 
    if @user_session.save 
    redirect_to root_url 
    else 
    render :action => :new 
    end  
end 
1

你無法通過簡單修改路線做到這一點,但你可以做某種條件語句在你的控制器。

def index 
    if logged_in 
    render :action => 'show' 
    else 
    render :action => 'new' 
    end 
end 

def show 
    ... 
end 

def new 
    ... 
end 

當然,會有很多種方式來做到這一點。

+1

你說得對,但'render:action =>'show''不會執行那個動作。它只呈現相應的視圖。因此,'表演'和'新'動作需要做的一切都應該在'索引'動作中完成(根據你的命名)。 – klew 2010-03-15 21:47:05

+0

@kley - 好點。使用重定向可能會更好,否則在調用渲染之前初始化任何您需要的操作。 – Karl 2010-03-15 23:25:56

+0

如果你使用重定向,那麼url會改變。 @espinet不希望它改變:) – klew 2010-03-16 10:02:23