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

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

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

Книги

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

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

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

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

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

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

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

Страница для ввода данных должна содержать в себе форму для ввода данных. На форме должно быть три поля для ввода числа и кнопка для выполнения запроса на вычисление. Желательно упомянуть на этой странице полное условие задачи. Поля для ввода должны иметь осмысленные метки, а не a, b и c.

Дополнительно если пользователь ввёл неправильные значения в поля ввода, то приложение должно сообщать пользователю об этом.

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

Страница для вывода списка решений должна предоставлять краткую информацию о введённх данных и результатах, а также предлагать пользователю перейти на страницу для вывода решения для каонкретного результата.

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

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

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