Переносим бизнес-логику из View

Главная / Переносим бизнес-логику из View

В этом посте мы рассмотрим то, как перенести бизнес-логику из Представления в Контроллер в соответствии с MVC-паттерном.

Также мы поговорим о том, как долго переменные экземпляров контроллера остаются на месте.

Действия (методы) внутри контроллера

Если действие (метод) ничего не делает, мы можем просто убрать его.

Пока определен правильный маршрут и есть правильно названный файл/шаблон представления, действие не обязано присутствовать, и Rails найдет правильный шаблон при помощи конвенции.

Контроллер: новый вид

Так что, мы можем закомментировать (или просто удалить) действия в нашем контроллере, и он всё еще будет работать.

Но, конечно же, есть причина иметь действия внутри контроллера, они не просто для декорации.

Переносим бизнес-логику

Наше приложение работает, но бизнес-логика не должна находиться во View. Представление должно иметь настолько мало Ruby-кода, насколько это возможно.

Давайте перенесем эту бизнес-логику из Представления в Контроллер.

Переменные экземпляров из контроллера доступны внутри view.

Попробуем также добавить счетчик просмотров. Изначально, @times_displayed будет равняться 0, и с каждым просмотром страницы это число должно увеличиваться на 1.

Здесь мы просто используем переменные из контроллера.

Посмотрим что получилось.

В обоих случаях просмотрено 1 раз? Интересно.

Переменные экземпляров в Rails

Дело в том, что, в отличие от других веб-фреймворков (к примеру, Servlets), вы не можете хранить значения в переменных контроллера между запросами.

Таким образом, каждый новый запрос создает новую переменную экземпляра.

Какие альтернативы? Можно хранить их в HTTP-сессии, либо в базе данных.

В итоге

Старайтесь держать бизнес-логику вне View.

Переменные экземпляров в контроллере доступны для View.

Переменные экземпляров не задерживаются между запросами.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *