Информация по теме

Цель: познакомиться с принципами организации веб-приложений в экосистеме Ruby, научиться писать простые приложения с использованием веб-библиотеки Sinatra.

Документация

Книги

Презентация

Код, написанный на занятии можно скачать по данной ссылке. Для распаковки архива используйте команду 7z x 2017-11-28.7z.

Практическое занятие

Цель занятия: научиться создавать простые веб-приложения, принимающие ввод данных от пользователя.

Задача: необходимо создать сайт, позволяющий пользователям решать простые задачи из задачника. Сайт помимо решения этих задач, позволяет пользователю узнать информацию о его создателе.

Сайт должен содержать в себе следующие страницы:

  • Главная страница, содержащая ссылки на все другие страницы, а также описание решаемой задачи.
  • Страница для ввода данных для решения задачи №1 из пункта 1.2 задачника.
  • Страница для вывода решения задачи №1.
  • Страница для показа информации о создателе приложения.

Общий макет страниц должен содержать навигационную панель, с которой можно перейти на главную страницу, страницу ввода информации, а также страницу для показа информации о создателе сайта.

Главная страница должна содержать описание назначения данной системы.

Страница для ввода данных должна содержать в себе форму для ввода данных. На форме должно быть три поля для ввода числа и кнопка для выполнения запроса на вычисление.

Страница для вывода решения должна содержать в себе не только результат вычисления, но также и введённые данные.

Страница о создателе приложения должна содержать фотографию создателя.

Предлагаемый подход к решению задачи

  • Добавьте в Gemfile зависимости sinatrta и sinatra-contrib и установите эти пакеты.
  • Создайте файл main.rb, в котором подключите автоматическую перезагрузку страницы при изменении файла.
  • Добавьте обработчик маршрута по умолчанию '/', выведите пользователю сообщение ‘Маршрут работает’.
  • Запустите приложение main.rb и откройте браузер по ссылке http://localhost:4567 и убедитесь, что всё работает.
  • Добавьте файл views/layout.erb, в котором разместите ссылки на все необходимые страницы.
  • Добавьте файлы в каталог views, которые описывают содержимое каждой страницы.
  • Реализуйте обработку передаваемых пользователем данных со страницы ввода данных. Обработку запроса метод должен завершать переадресацией на страницу вывода информации (с помощью метода redirect). Передачу данных от одного ресурса к другому осуществляете с помощью механизма сессий.
  • Хранение данных в переменных модуля запрещено.