Rails 4.2.3
Задача: К каждой ссылке добавить параметры, если они присутствуют в запросе.
Решается (как казалось сначала) элементарным переопределением url_for.
Но, как оказалось, это не работает для именованых маршрутов.
Залезание вглубь рельсов показало, что для именованых маршрутов вызывается метод url_for из ActionDispatch::Routing::RouteSet а не из ActionDispatch::Routing::UrlFor
Можно переопределить и его, но тогда я не имею доступа к запросу, чтобы получить параметры.
Сутки копания в гугле результатов не дали. Нашел только то, что в Rails 4 оптимизировали геренацию маршрутов и теперь, чтобы все работало по старому, надо прописать default_url_options с каким-нибудь значением. Прописано, не помогло. Да и, опять же, залезание вглубь рельсов показало, что при создании маршрутов в классе UrlHelper, OptimizedUrlHelper не используется, а используется сам UrlHelper
В рельсах слишком мало магии, нужно добавить еще, да так чтобы роутинг-хэлперы выдавали что-то, что совсем не будет ожидать неудачник, сопровождающий ваш код.