Задача

Разработайте веб-приложение, позволяющего пользователю управлять списком заметок о посадках на приусадебном участке.

Одна заметка описывается следующими полями:

  • Дата выполнения работ. Реально существующая дата.
  • Тип работы, один на выбор:
    • Посадка
    • Подготовка почвы
    • Сбор урожая
    • Стрижка травы
    • Уборка
  • Название культуры, строка, не обязательное поле.
  • Объём работ, вещественное число.
  • Единица измерения объёма, один на выбор:
    • Ряд
    • Грядка
    • Квадратный метр
    • Штука
  • Описание, текстовое поле в произвольном формате.

Приложение должно позволять пользователю:

  • Просматривать список заметок, отсортированный по дате выполнения. В списке надо показывать дату и тип работ.
  • Добавлять новую заметку.
  • Просматривать детальную информацию о заметке.
  • Редактировать заметку.
  • Просматривать список заметок по страницам.

Технические аспекты реализации

На настоящий момент вы должны успешно решать первые две задачи по аналогии с предыдущими работами.

Единственное изменение, которое вам потребуется сделать, — это добавить уникальный идентификатор к элементам списка. Для удобства работы с ними лучше их сделать целыми числами.

Просмотр информации о заметке

  1. Добавьте в приложение обработчик маршрута /notes/INTEGER. Используйте обработчик маршрута, основанный на классах
  2. Используйте переданное число как уникальный идентификатор вашей заметки.
  3. В модели выполняйте поиск по данному идентификатору.
  4. В контроллере в зависимости от результатов либо показывайте страницу с информацией об объекте, либо перенаправляйте на страницу, которая будет содержать информацию о том, что ресурс не найден.

Для обработки ситуации с не найденной информацией подключите дополнение not_found.

Добавление возможности редактирования информации

  1. Добавьте на страницу с информацией о заметке ссылку на редактирование, notes/ID/edit.
  2. При переходе по данному маршруту извлекайте из хранилища треугольник по идентификатору. Если треугольника нет, тогда перенаправляйте пользователя на список с сообщением, что данного треугольника не существует.
  3. На странице реализуйте логику работы, схожую с добавлением нового элемента.

Добавление возможности постраничного вывода информации

  1. Добавьте новый параметр для страницы вывода списка — номер страницы.
  2. Если параметр не указан, тогда считаем что пользователь выбрал первую страницу.
  3. Параметры передаются в модель, которая возвращает массив из заметок, соответствующий данной странице.
  4. Помимо данных модель также должна вернуть информацию для формирования навигационной панели:
    • Количество страниц, которое доступно сейчас.
    • Текущая страница.