rails url_for не генерирует один и тот же URL с разных страниц
У меня проблема с URL моего сайта. У меня есть 2 маршрута для одного и того же действия: необработанный и переписанный URL:
get '/page/:id' => 'page#view'
get '/:username/:rewritten_url' => 'page#view'
Все работает нормально, кроме случаев, когда я пытаюсь сгенерировать необработанный URL из переписанной страницы. Пример:
У меня есть 2 страницы: одна с переписанным URL и вторая без (у меня нет переписанного URL).
page_id : 1
rewritten_url : /my-super-page
page_id : 2
rewritten_url : nil
Моя проблема, когда я пытаюсь сгенерировать ссылку на страницу 2, используя метод url_for, со страницы 1.
Это не работает, если я нахожусь на странице 1 с переписанным URL. url_for генерирует для меня следующий необработанный URL: /my-super-page?id=2 (вместо /page/2)
Это работает, если я нахожусь на странице 1 с сырым URL.
Кроме того, это работает, если я пытаюсь сгенерировать переписанную ссылку либо с необработанной страницы, либо с переписанной страницы.
РЕДАКТИРОВАТЬ
Вот один вызов url_for, который не удался (самое простое, что я мог):
url_for(controller: 'page', action: 'view', id: '3423423423')
# returns /my-super-page?id=3423423423
Обычно у меня есть переопределение метода url_for, но я отключил его, чтобы решить эту проблему.