2014-10-20 5 views
4

Я хотел бы иметь возможность получить имя текущего маршрута в запросе в Ruby on Rails. Я нашел способы доступа к контроллеру и действия запроса, но я хотел бы получить доступ к строке или символу имени.Получить текущий путь в Rails

Например, если у меня есть ресурс users;

  • Если я иду/пользователей/1 Я хотел бы быть в состоянии получить users_path
  • Если я иду/пользователей/1/редактировать Я хотел бы быть в состоянии получить edit_users_path

Я просто хочу получить имя текущего маршрута по данному запросу.

+0

не уверен, что я понимаю вопрос, но если вы наберете маршруты рейка в своем терминале, он даст вам все ваши пути – Joel

+0

Я знаю, что 'rake routes' перечислит маршруты для меня, я хочу получить имя маршрут в течение одного запроса. – Dwight

ответ

0

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

request.original_url # => www.mysite.com/users/1 

request.request_uri # = > /users/1 
2

Следующий код даст его вам.

Rails.application.routes.recognize_path(request.request_uri) 

Обратите внимание, что есть несколько исключений, которые могут вышвырнут в ActionDispatch::Routing::RouteSet (что возвращается из Rails.application.routes), так что будьте осторожны о них. Вы можете найти реализацию метода here.

+1

В Rails 4 мне кажется, что вместо этого нужно использовать 'request.original_url'. Когда я делаю ответ, '{: action =>" new ",: controller =>" users "}', когда я ищу 'new_user_path'. – Dwight

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