Маршрутная инспекция - PullRequest
0 голосов
/ 31 мая 2009

Можно ли каким-либо образом получить дочерние пути по заданному пути?

Я имею ввиду следующие маршруты:

map.resources :users do |user|
  user.resources :articles
  ...
end

Если я даю путь = "пользователи / 1", есть ли способ получить маршруты пользователи / 1 / редактировать, пользователи / 1 / статьи, пользователи / 1 / статьи / новые?

Спасибо заранее. -Satynos

Ответы [ 3 ]

2 голосов
/ 01 июня 2009

Для этого есть грабли,

rake routes | grep "users"

С машины nix, перестаньте делать это

Если есть что-то умное, что вы хотите сделать в приложении Rails, возможно, стоит проверить его источник в rails / railties

0 голосов
/ 31 мая 2009

Да, определения маршрутов очень доступны. Следующий код должен получить вам список маршрутов для конкретного контроллера:

rts = ActionController::Routing::Routes.routes.reject do |rt|
  rt.defaults[:controller] != "users" || !rt.significant_keys.index(:id)
end

Вы можете запустить следующий код в консоли, чтобы увидеть маршруты:

rts = ActionController::Routing::Routes.routes.reject do |rt|
  rt.defaults[:controller] != "users" || !rt.significant_keys.index(:id)
end; nil
rts.each do |rt|
  puts "Route: #{rt.segments}"
end; nil

Сегменты на самом деле также разбиты на массивы, что означает, что будет проще фильтровать список только по маршрутам, для которых требуется идентификатор пользователя.

0 голосов
/ 31 мая 2009

Я точно не знаю, о чем вы спрашиваете, но вот что я считаю переходом к ресурсам для маршрутизации:

Рельсы Маршрутизация снаружи В

Демистифицирована маршрутизация Ruby on Rails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...