Как я могу удалить сегмент типа ресурса из моего URI? - PullRequest
2 голосов
/ 10 июня 2011

В моем проекте есть файлы и папки, представленные моделями File и Folder. Проект функционально завершен, и теперь я пытаюсь очистить схему URI, сохранив мои именованные маршруты.

Мой маршрут содержит простой вложенный ресурс:

resources :folders do
  resources :files
end

В настоящее время folder_file_path(@folder, @file) выводит:

/folders/12/files/3

Я переопределил to_param для вывода удобочитаемого слага, получая

/folders/my-folder/files/my-file

Я бы хотел пойти дальше и удалить лишние сегменты folders и files из URI. Как я могу изменить свой вложенный resources так, чтобы folder_file_path выводил следующее?

/my-folder/my-file

Я бы хотел сохранить свои маршруты простыми, используя вложенный resources вместо перехода к более длинному беспорядку с именованными маршрутами, вот как я в настоящее время достиг этого:

get ':folder_slug' => 'folders#show', :as => 'folder'
get ':folder_slug/edit => 'folders#edit', :as => 'edit_folder'
# ...
delete ':folder_slug' => 'folders#destroy', : as => 'folder'

get ':folder_slug/:file_slug' => 'files#show', :as => 'folder_file'
get ':folder_slug/:file_slug/edit' => 'files#edit', :as => 'edit_folder_file'
# ...
delete ':folder_slug/:file_slug' => 'files#delete', :as => 'folder_file'

1 Ответ

1 голос
/ 10 января 2012

как то так

resources :folders, path: ''
resources :folders, path: '', only: [] do
  resources :files, path: ''    
end
...