2010-09-26 130 views
5

根我有我的routes.rb這樣一個嵌套的資源:Rails的路線嵌套資源

map.resources :users, :only => [:index] do |user| 
    user.resources :projects 
end 

這給我的網址一樣/users/2/projects,這將表明user 2.擁有的用戶已簽訂後所有項目,我希望這是根頁面,使用map.root。我將如何設置map.root以啓用此功能?我正在使用設計,所以我可以得到當前用戶current_user,但我不確定這是routes.rb可用。

+0

有關設置根頁面是一個重定向是什麼?然後像'Site :: home'重定向用戶到該頁面?這樣客人不會受到影響。 – 2010-09-26 19:19:38

+0

@webdestroya - 可以工作。儘管我不必擔心客人,這是一個私人網站,所以任何沒有登錄的人都被重定向到登錄頁面。 – Skilldrick 2010-09-26 19:20:53

回答

4

我們正在用一個基於if current_user呈現兩個不同模板的HomepageController來解決這個問題。

+0

感謝您的支持。我曾期待routes.rb處理這樣的事情,但我認爲保持那種邏輯是有道理的。排序! – Skilldrick 2010-09-26 19:42:49

1

你會你的路線設置爲RootController控制器routes.rb在保留現有嵌套的路線:

map.root :controller => :root 

控制器RootControllerindex行動可能然後渲染ProjectsControllerindex行動:

class RootController < ApplicationController 
    def index 
    render :controller => :projects, :action => :index 
    end 
end 

最後,ProjectsController將使用current_user來呈現合適的項目列表:

class ProjectsController < ApplicationController 
    def index 
    @projects = Project.all.find_by_user(current_user) 
    end 
end 

這掩蓋了身份驗證等細節

0

你可以驗證後重定向到該頁面在您的過濾方法:

redirect_to user_projects_path(logged_in_user)