Генератор форм
Библиотека, с помощью которой удобно создавать формы в шаблонах сайтов. Позволяет сократить код описания формы во много раз за счет автоматической обработки ошибок и различных контролов.
Цель
Настройка окружения
Первый проект прокачивает работу с экосистемой Ruby. Студенты учатся запускать любые программы, написанные на Ruby. Знакомятся с интерпретатором языка и его возможностями по быстрой отладке и проверке работы небольших кусков кода. Знакомятся с bundler. Утилитой, через которую происходит управление проектами: установка и обновление дополнительных библиотек, публикация пакета и многое другое.
Здесь же идет формирование правильной инженерной культуры. Одно из первых заданий в настройке — это подключение линтера (Rubocop), который автоматически следит за стилем кода и находит потенциальные ошибки. Код, соответствующий стандартам кодирования, гораздо проще в анализе и значительно выше оценивается другими программистами. Это, в том числе, важно при демонстрации проектов на собеседованиях.
Автоматизированные тесты – неотъемлемая часть профессиональной разработки. Генератор форм — удобный и простой проект для написания тестов до кода. Практикуя TDD мы можем тестировать наше приложение до его написания. Тесты помогут эффективно писать, отлаживать и рефакторить код.
Архитектура
В ходе разработки понадобится выполнять множество операций: парсинг входящих данных, построение формы, формирование необходимого вывода. Все это требует хорошей организации кода. Модульность и абстракции выходят в этом проекте на новый уровень.
Разделение внутренней архитектуры формы и представления позволяет подключать новые шаблонизаторы.
Описание
Генератор Форм - библиотека, с помощью которой удобно создавать формы в шаблонах сайтов. Это популярная задача, для решения которой существует множество библиотек, например библиотека встроенная в Rails или популярный gem SimpleForm.
Пример использования:
User = Struct.new(:id, :name, :job)
user = User.new
html = HexletCode.form_for user, url: '/users' do |f|
f.input :name
f.input :job, as: :text
f.submit
end
puts html
# Будет выведено:
# <form action="/users" method="post">
# <label for="name">Name</label>
# <input name="name" value="" type="text">
# <label for="job">Job</label>
# <textarea cols="20" rows="40" name="job"></textarea>
# <input type="submit" value="Create">
# </form>
Наставники



Проекты входят в стоимость обучения на любом плане: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.
Проекты дают опыт разработки в реальной среде. Проходите каждый проект сразу после изучения курсов, которые стоят в учебном плане перед ним, — это отличный способ глубже разобраться в материале.
Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.
Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».
Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться.
Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.
Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.