Меньше магии в роутах 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 смержен

Меньше магии в роутах Rails
Rails теперь требует Ruby 3... ➜Меньше магии в роутах Rails ➜MySQL 26.10.0 Ранний Доступ ➜Новости Git 2.56.0 ➜MariaDB Server 13.0.2 ➜Релиз Rspamd 4.2.0 ➜Вышел Gnome 51 ➜Ruby 4.0.7 ➜Релиз Immich 3.2.0 ➜Отмена претензий Microsoft ... ➜Новая версия htmx ➜Nginx 1.35.1 ➜Rclone пофиксил загрузку в ... ➜Rootless Podman и исходные ... ➜Обновление Beszel - 0.19.0 ➜