У меня есть одноэлементный маршрут, который выглядит так:
resource :avatar, :only => [:edit, :update]
Когда пользователь редактирует аватар, он переходит в / avatar / edit для просмотра формы, при сохранении он отправляется с запросом пут в / avatar, а затем перенаправляется обратно в / avatar / edit. Что должно произойти, когда мы получим GET-запрос к / avatar?
В данный момент маршрут не распознан, и возвращается общий 404. Но это происходит намного чаще, чем следовало бы, поэтому я чувствую, что мы должны что-то с этим сделать. Я испытываю желание добавить:
get "/avatar" => redirection("/avatar/edit")
Есть причина не делать этого? какие-либо опасности в этом?
Я не уверен, что у меня есть все причины, по которым эта ошибка возникает, но я знаю несколько:
Там есть ошибка, поэтому вместо перенаправления пользователю просто снова показывают форму редактирования в пут-путе, но затем, вместо повторной отправки, пользователь повторно использует URL-адрес (нажав клавишу ввода в URL-адресе поля, копирование и вставка, закладки и т. д.).
Пользователь в этот момент решает изменить локаль (часто это происходит, потому что сообщение об ошибке - это первый раз, когда человеку действительно нужно понять веб-сайт, поэтому он решает переключить язык на тот, который понимает), какой из Курс генерирует get по тому же URL.
У меня теперь простое перенаправление не будет лучшим во втором случае, потому что ошибка потеряна, но, по крайней мере, она лучше, чем 404.