Ruby on Rails — URL-адрес сопоставления с контроллером, методом и параметрами

Я знаю, что файл route.rb в приложении Rails сопоставляет URL-адрес с контроллером, методом и набором параметров в хэше params. Это несколько усложняется «ресурсами», вложенными ресурсами и маршрутами без RESTful.

Есть ли способ запустить команду на консоли rails, чтобы сопоставить URL-адрес и точно определить, какой контроллер, какой метод, какой метод (методы) http и точное значение хэш-параметра из заданного URL-адреса?

Возможно ли затем запустить метод контроллера с хэшем параметров на консоли rails и получить вывод контроллера, отправленный в STDOUT? Если да, то как?


person Jay Godse    schedule 27.11.2012    source источник


Ответы (2)


Попробуйте это

Rails.application.routes.named_routes.each{|p,s| puts p,s} 
Rails.application.routes.url_helpers.my_path_helper   # To get url for a path helper

or

route = Rails.application.routes
route.recognize_path "/poweruser/3"           # will give you result exactly you wanted 
person Rahul garg    schedule 27.11.2012
comment
Второй был хорошим ответом. Но иногда я получаю сообщение об ошибке (маршрут RuntimeError не завершен). Эта страница по адресу stackoverflow.com/questions/9291366/ предполагает, что этот метод не подходит для Rails 3. Кроме того... этот метод не работает для маршрутов, которые работают только с HTTP POST . - person Jay Godse; 27.11.2012
comment
ну, я обычно использовал первую команду для фильтрации и поиска маршрутов, их помощников и т. д. - person Rahul garg; 27.11.2012

попробуй с бегом

bundle exec rake routes

См. раздел Определить, существует ли путь как маршрут в контроллере Rails

Rails.application.routes.recognize_path
person BvuRVKyUVlViVIc7    schedule 27.11.2012
comment
Я знаю об этом. Я искал что-то особенное. Например, если бы я мог запустить такую ​​команду, как route '/poweruser/3', она могла бы дать мне что-то вроде {:controller=›poweruser, :params=›{:id=›3} } в качестве возвращаемого значения (хэш хэшей). - person Jay Godse; 27.11.2012