Меньше магии в роутах Rails
October 01, 2026
Раньше в Rails можно было писать маршруты, где имя контроллера и действия "читались" прямо из URL:
get ":controller(/:action(/:id))"
То есть, если пользователь заходил по адресу /photos/show/1, Rails автоматически понимал, что нужно вызвать PhotosController#show с id = 1.
Это было иногда удобно, но в то же время создавало проблемы с безопасностью и предсказуемостью.
Что теперь происходит:
Такой маршрут вызовет ArgumentError. Это поведение было устаревшим (deprecated) начиная с Rails 5.0, и теперь его окончательно убрали.
Как переписать маршруты
Вместо "магического" чтения из URL нужно явно указывать контроллер и действие:
get "photos/:id", to: "photos#show"
PR смержен