Создание вложенных маршрутов для ресурса, который использует Act_as_tree - PullRequest
2 голосов
/ 12 мая 2011

знаете ли вы, как динамически генерировать маршруты, такие как:

... (/:parent_id(/:parent_id(/:parent_id(/:parent_id))))/:id

Я задаю этот вопрос, потому что у меня есть модель Folder, которая действует как дерево (у нее есть поле parent_id), а ее метод to_param возвращает ее name, которая уникальна в области действия parent_id. Итак, каждое :parent_id и событие :id являются name. Вот пример пути (с 4 подпапками):

/home/desktop/projects/rails/foobar

... где первый :parent_id (корень) "home", а :id - "foobar".

Другой пример маршрута может быть (с 1 подпапкой):

/home/music

... где, как вы можете видеть, params[:parent_id] == 'home' и params[:id] == 'music'.

Есть ли чистый способ написать красивый маршрут Rails 3, который обрабатывает такие возможные вложенные маршруты? Спасибо !!

1 Ответ

4 голосов
/ 12 мая 2011

Почему бы вам просто не использовать маршрутный глобер и разбить его в вашем контроллере?

# routes.rb
get "/*folders/:id" => "files#show" 

В разделе *folders будут отображаться несколько сегментов URL.

# files_controller.rb
def show
  folders = params[:folders].split('/') # gives an array of folder names
  # do whatever else necessary
end
...