Создание вложенных маршрутов для страниц, которые используют acts_as_tree - PullRequest
1 голос
/ 30 октября 2009

У меня есть модель страницы, которая имеет глубину 1 поколение. Как я могу сделать свои маршруты, чтобы

/ о

/ о / руководство

/ о / смотрового-и-миссии

/ контакт

/ * присоединиться 1011 *

/ Join / преимущества

работа

Слагги происходят из плагина friendly_id и являются уникальными.

1 Ответ

0 голосов
/ 30 октября 2009

В конце ваших маршрутов:

  map.with_options :controller => 'pages' do |pages|
    pages.show_page                ':id',              :action  => 'show'
    pages.show_page_with_parent    ':id/:parent_id',   :action  => 'show'
  end

Если вы сгенерируете ссылку на него:

show_page_with_parent_path(:id => page.name, :parent_id => page.parent.name)

Это, конечно, если предположить, что ключ slug - это имя.

Конечно, вы можете дополнительно настроить это решение с помощью вспомогательной функции:

EG:

def custom_show_page_path(page)
  if page.parent.nil?
    show_page_path(:id => page.name)
  else
    show_page_with_parent_path(:id => page.name, :parent_id => page.parent.name)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...