2013-09-06 2 views
1

Я ищу способ получить необработанный необработанный маршрут Rails.Как получить неинтерпретированный маршрут Rails

Скажем, у меня есть маршрут:

/data_model/23455-cooltitle/sub_models

При доступе я хотел бы получить первоначальный маршрут с параметрами, как:

/data_model/:model_id/submodels

+0

С какой целью? Это кажется действительно странным запросом. –

+0

На очень высоком уровне. У меня есть сторонняя служба, которая содержит данные, которые мы хотим сопоставить с определенными разделами нашего приложения rails. Мы можем пометить данные в сторонней службе строками. Затем наше приложение rails извлекает данные с этими строками. Использование имени контроллера/действия является слишком общим и не всегда отображает 1-к-1 с нашими маршрутами. Я хотел сопоставить данные с исходными маршрутами вместо интерпретированных маршрутов, чтобы охватить весь раздел или маршрутизацию. – kevzettler

ответ

1

Я немного неясно, что вы хотите, но я предполагаю, что вы имеете в виду, что с учетом String, представляющего путь, который отображается на одном из наших маршрутов, вы хотели бы вернуть String с параметрами сегмента пути re по их идентификационным клавишам. Вы можете сделать это следующим образом:

def uninterpret(path) 
    path_params = Rails.application.routes.recognize_path(path) 
    path_params.each do |key, value| 
    path.sub!(value, ":#{key}") 
    end 
    path 
end 

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

Смежные вопросы