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

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

Задача

Доработайте приложение из предыдущего занятия, чтобы оно позволяло одновременно управлять и списком просмотренных фильмов, и списком участников кружка. Для реализации управления каждым из списков вам необходимо сформировать свои части маршрута и объединить их с помощью плагинов hash_routes и view_options.

Приложение должно позволять управлять списком членов кружка:

  • Просматривать список всех членов кружка.
  • Добавлять нового члена кружка.
  • Изменять информацию о члене кружка.
  • Удалять члена кружка клуба. При удалении кружка во всех связанных моделях пользователь должен заменяться на «неизвестный член клуба».

Член кружка описывается следующими полями:

  • Имя
  • Фамилия
  • Псевдоним
  • Дата вступления в клуб
  • Дата выхода из списка активных членов клуба

Приложение должно позволять управлять списком просмотренных фильмов:

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

Фильм описывается следующими полями:

  • Название.
  • Продолжительность.
  • Ссылка на кинопоиск.
  • Отзыв.
  • Автор отзыва.

Технические требования к реализации

  • Приложение должно следовать схеме формирования сложных приложений Roda. Для каждого раздела должен быть предоставлен свой собственный контроллер, обработчик маршрутов.
  • Данные приложения можно сохранять в оперативной памяти, но рекомендуется сформировать модели Sequel.
  • При обработке данных с формы должна быть реализована проверка корректности ввода на стороне сервера. Недостаточно добавить ограничения в HTML-поля.
  • При возвращении пользователю формы, в которой были допущены ошибки, её поля должны быть заполнены данными, которые указал пользователь на предыдущем шаге.

Рекомендации по организации маршрутов

Ваше приложение должно обрабатывать следующие запросы:

  • get / - перенаправление на /movies.
  • Маршруты для работы с данными об участниках.
    • get /members - отображение списка участников. Должен поддерживаться постраничный просмотр.
    • get /members/new - отображение формы на добавление участника кружка.
    • post /members/new - обработка результатов формы на добавление участника кружка.
    • get /members/:id - отображение информации об участнике группы с уникальным номером id.
    • get /members/:id/edit - отображение формы на редактировании информации об участнике.
    • post /members/:id - обработка результата заполнения формы на редактирование информации об участнике.
  • Маршруты с информацией о фильмах.
    • get /movies - отображение списка фильмов. Должен поддерживаться постраничный просмотр.
    • get /movies/new - отображение формы на добавление фильма.
    • post /movies/new - обработка результатов добавления формы. После успешного добавления должна происходить переадресация на созданную страницу фильма.
    • get /movies/:id - отображение информации о фильме с уникальным номером id.
    • get /movies/:id/edit - отображение формы на редактирование фильма.
    • post /movies/:id - обработка результата заполнения формы на редактирование фильма.