Ruby on Rails 7 предлагает множество способов быстрого доступа, но есть смысл в маршрутизации самостоятельно.

Сейчас я прохожу курс веб-разработки. Последней оценочной задачей было создание двустороннего приложения Marketplace с использованием Ruby on Rails. Мы изучали Rails на занятиях, я прочитал кучу руководств и сделал несколько простых практических приложений. Я был готов идти!

На это задание было не так много времени, поэтому я использовал ярлык маршрутизации ресурсов Rails для профилей и снова для вложения адресов в профили. Мои маршруты выглядели так:

resources :profiles do
  resources :addresses
end

Это работало нормально для меня, но я столкнулся с несколькими проблемами со ссылками, которые я действительно не понимал. Мне также нужно было использовать Devise для учетных записей пользователей (нам настоятельно рекомендовалось вводить профили отдельно, а не расширять класс Devise User, чтобы не нарушать что-либо, необходимое для безопасности). Я хотел, чтобы информация о профиле была вложена в регистрацию пользователя; и вернулся прямо к тому, что я знал:

resources :users do
  resources :profiles do
    resources :addresses
  end
end

Все остальные ссылки и кнопки в моем приложении сломались. Когда я исправлял одну проблему, появлялась другая — обычно по той же ссылке! Я потратил дни, пытаясь исправить это; но я не мог продвинуться ни на шаг. В конце концов я обратился за помощью к инструктору — я был на полпути к экзамену и продвинулся не намного дальше первого дня!

Мой инструктор потратил около двух минут на просмотр моего кода и прислал скриншот моих маршрутов, спросив: «Вы понимаете, что здесь происходит?» Он предложил мне переписать все мои маршруты вручную. Я был предсказуемо деморализован: я уже потерял много времени, пытаясь решить проблемы, теперь мне нужно было вернуться и переделать работу, что заняло бы еще больше времени.

В итоге это был исключительно положительный опыт! Помимо устранения огромного количества ненужных маршрутов, это помогло мне разобраться со всеми проблемами, которые у меня были. Многие мои проблемы с неработающими (или отображаемыми) ссылками были связаны с ожиданием неправильных параметров. Конечно, я знал, как использовать параметры; но я действительно не понимал параметры. Построение маршрутов вручную заставило меня задуматься о том, какие параметры я передаю, когда и как я хочу их использовать.

Использование ярлыков ресурсов и их вложение, как у меня, означало, что мои пути часто были запутанными и передавали больше информации, чем было необходимо. Я действительно не понимал этого, и, будучи новичком в Rails, я не мог правильно управлять им, чтобы получить нужную мне информацию. Я не понимал, что это было чем-то, что я контролировал.

Несмотря на то, что это заняло дополнительное время, которого, как мне казалось, у меня не было, я многому научился за день или два, которые потребовались для переделки моего приложения. Это дало мне возможность закрепить свое понимание маршрутов и начать понимать параметры. Я смог исправить повторяющиеся проблемы, которые у меня возникали, и быстрее решать будущие проблемы.

Что еще более важно, это напомнило мне, что смысл того, что я делаю, заключается в том, чтобы учиться, даже если это займет у меня немного больше времени. Попытка освоить незнакомые навыки может быть пугающей, но такие маленькие победы — это моменты передышки, которые помогают мне продолжать.