我目前有一个如下所示的routes.rb文件:
map.resources :profiles do |profile|
profile.resources :projects, :has_many => :tasks
end
这给了我这样的路线:
/profiles/:profile_id/projects/:project_id/tasks
这接近我想要的,但是我不想使用'/ profiles /:profile_id /'部分来代替那个用户名,所以路线看起来像:
/:profile_user/projects/:project_id/tasks
我怎样才能实现这样的目标?我已经看了一遍,并没有找到任何关于如何做到这一点,但我也可能没有找到正确的事情。
答案 0 :(得分:0)
我尝试使用命名空间或连接的一些选项,但它没有用..
如果你真的想做这些路线,我想你必须使用connect并创建所有路线,如下所示:
map.connect ':profile_user/projects/:project_id/tasks', :controller => :tasks, :action => :index, :method => :get
map.connect ':profile_user/projects/:project_id/tasks/new', :controller => :tasks, :action => :new, :method => :get
map.connect ':profile_user/projects/:project_id/tasks', :controller => :tasks, :action => :create, :method => :post
答案 1 :(得分:0)
您可以使用with_options方法:
map.with_options(:path_prefix => ":profile_user", :name_prefix => "profile_" ) do |profile|
profile.resources :projects, :has_many => :tasks
end
然后它会为您提供以下路线:
profile_project_tasks_path(user.username, project)
# => /:profile_user/projects/:project_id/tasks
new_profile_project_task_path(user.username, project)
# => /:profile_user/projects/:project_id/tasks/new
等