Нестандартные маршруты в Rails - PullRequest
1 голос
/ 18 мая 2010

В настоящее время у меня есть файл rout.rb, который выглядит следующим образом:

map.resources :profiles do |profile|
  profile.resources :projects, :has_many => :tasks
end

И это дает мне такие маршруты:

/profiles/:profile_id/projects/:project_id/tasks

Это близко к тому, что я хочу, но вместо раздела '/ profile /: profile_id /' вместо этого я хочу просто указать имя пользователя, чтобы маршрут выглядел примерно так:

/:profile_user/projects/:project_id/tasks

Как мне достичь чего-то подобного? Я просмотрел все и не нашел ничего о том, как это сделать, но я также, возможно, не искал правильную вещь.

Ответы [ 2 ]

0 голосов
/ 18 мая 2010

Вы можете использовать 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

и т.д.

0 голосов
/ 18 мая 2010

Я пробовал некоторые варианты, используя пространство имен или соединение, но это не сработало ..

Если вы действительно хотите сделать эти маршруты, я думаю, вам нужно будет использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...