Есть ли способ узнать, какой маршрут соответствует запросу из браузера в Rails?
-
03-07-2019 - |
Вопрос
В моем файле rout.rb есть несколько маршрутов. Я хотел бы знать, какой из них был найден для любого запроса, который мог сделать пользователь. Р>
Например, в route.rb у вас есть следующие маршруты:
map.connect ":controller/:action" map.connect ":controler/:action/:id"
и если у меня есть контроллер с именем a и действие с именем first , когда пользователь переходит на http: // what / a / first , я хотел бы видеть, что маршрут : controller /: action был выбрал. р>
Могу ли я сделать это для любого запроса?
Решение
Если вы просто хотите узнать, в каком контроллере / действии вы находитесь, контроллер предоставляет методы controller_name
и action_name
. Так что вы можете сделать что-то вроде этого:
# in application_controller.rb
before_filter :set_where_am_i
def set_where_am_i
@where_am_i = "#{controller_name}/#{action_name}"
end
# in views/layouts/application.erb, somewhere in your html
# (here I choose the <title>)
<head><title>Here: <%= @where_am_i %></title>
Другие советы
Самая близкая вещь, которую я мог найти, была в файлах журнала. Для каждого запроса вы увидите, какое действие какого контроллера соответствует. Вы увидите что-то вроде этого:
Parameters: {"action"=>"show", "id"=>"2", "controller"=>"mycontroller"}
Оттуда это должно быть легко, верно?