2015-06-05 4 views
4

Я использую устройство для аутентификации пользователей в приложении Rails 4.1.9.Как программировать список всех маршрутов разработки

Мне нужно перечислить все схемы разработки в файле javascript.

Я пытался сделать что-то вроде этого:

all_routes = Rails.application.routes.routes.map do |route| 
    route.path.spec.to_s.gsub('(.:format)', '') 
end 

Это просто печатает все рельсы маршрутов. Как я могу только придумать?

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

ответ

2

Использование контроллера маршрутов, чтобы определить, если маршрут относится к контроллеру DEViSE или нет: route.defaults[:controller], это может получить сложно если вы настраиваете или пропускаете маршруты по умолчанию:

После того, как у вас есть контроллер, например: "devise/sessions", должно быть легко спросить, есть ли оно .starts_with? "devise" или что-то подобное. Надеюсь, это поможет!

+1

Вторая строка выше, может быть изменена следующим образом: 'route.path.spec.to_s.gsub ('(:. Формат)', ''), если route.defaults [: контроллер] && route.defaults [: контроллер]? .include ('Разрабатывают') ' –

1

Это может быть надежный способ. Он должен работать даже в случае пользовательских контроллеров.

# Ask devise what controllers is has mapped 
devise_controllers = Devise.mappings.values.map do |mapping| 
    mapping.controllers.map{|k, v| v}} 
end.flatten.uniq 
# Ask rails for the routes that resolve to devise controllers 
Rails.application.routes.routes.select do |route| 
    devise_controllers.include? route.defaults[:controller] 
end 
Смежные вопросы