2010-09-26 133 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)