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, но я отключил его, чтобы решить эту проблему.

0 ответов

Другие вопросы по тегам