@Fly3110
web developer

Как перехватить url_for для именованых маршрутов?

Всем привет.

Rails 4.2.3
Задача: К каждой ссылке добавить параметры, если они присутствуют в запросе.
Решается (как казалось сначала) элементарным переопределением url_for.
Но, как оказалось, это не работает для именованых маршрутов.
Залезание вглубь рельсов показало, что для именованых маршрутов вызывается метод url_for из ActionDispatch::Routing::RouteSet а не из ActionDispatch::Routing::UrlFor

Можно переопределить и его, но тогда я не имею доступа к запросу, чтобы получить параметры.

Сутки копания в гугле результатов не дали. Нашел только то, что в Rails 4 оптимизировали геренацию маршрутов и теперь, чтобы все работало по старому, надо прописать default_url_options с каким-нибудь значением. Прописано, не помогло. Да и, опять же, залезание вглубь рельсов показало, что при создании маршрутов в классе UrlHelper, OptimizedUrlHelper не используется, а используется сам UrlHelper
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vsuhachev
В рельсах слишком мало магии, нужно добавить еще, да так чтобы роутинг-хэлперы выдавали что-то, что совсем не будет ожидать неудачник, сопровождающий ваш код.

#define FALSE TRUE /* удачной отладки */

ЗЫ: извините, наболело
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы