Подтвердить что ты не робот

Что такое MVC в Ruby on Rails?

Может кто-нибудь, пожалуйста, объясните мне MVC в Ruby on Rails, в условиях неспециалиста. Я особенно заинтересован в понимании модели в MVC (не могу получить голову вокруг модели).

4b9b3361

Ответ 1

Некоторая предыстория, MVC является (составной) схемой проектирования и была разработана в 1979 году Трюгве Реенскаугом (Smalltalk).

True MVC был в основном запланирован для использования в n-уровневых (не веб-системах) системах и разбивает систему на 3 отдельные части: Model, View и Controller

Модель

  • Содержит данные для приложения (часто связанные с базой данных)
  • Содержит состояние приложения (например, какие заказы у клиента)
  • Содержит всю бизнес-логику
  • Уведомляет вид изменений состояния (** не относится к ROR, см. ниже)
  • Отсутствует знание пользовательских интерфейсов, поэтому его можно использовать повторно

Вид

  • Создает пользовательский интерфейс, который представляет данные пользователю
  • Пассивный, то есть не выполняет никакой обработки.
  • Работа с изображениями выполняется, как только данные отображаются пользователю.
  • Многие представления могут обращаться к одной и той же модели по разным причинам.

Контроллер

  • Получение событий из внешнего мира (обычно через представления)
  • Взаимодействие с моделью
  • Отображает соответствующее представление пользователю

** Классический MVC не подходит для веб-приложений, так как модель не может отправлять все изменения в представление в режиме наблюдателя (представление представляет собой веб-страницу). Модель 2 была представлена ​​для преодоления изменяющейся инфраструктуры командой JSP в 90-х годах. Структуры MVC Web на самом деле не MVC, а Model2 (это относится к Ruby on Rails).

Вот описание графических интерфейсов GUI, включая MVC от мастера, Martin Fowler Архитектуры графического интерфейса

Лучшая книга, которую я нашел до сих пор, - Agile Web Development с Rails. Он начинается с того, что не имеет никакого знания и является достаточно полным.

Надеюсь, это поможет пролить свет вам!

Ответ 2

Ваша модель - это структура данных, используемая вашей программой.

Вид - это часть, которая взаимодействует с экраном или на следующем уровне вверх.

Контроллер обычно обрабатывает данные между моделью и представлением

Структуры MVC часто вложены, поэтому "Модель" или "Вид" могут содержать свой собственный MVC (подумайте о компоненте на экране. Вы можете просто заполнить его строкой, но за кулисами код компонента рисует собственный маленький вид, имеет свою собственную небольшую модель (строка, которую вы проходите) и имеет небольшой контроллер, рисующий данные на виде.

В Rails роли модели, представления и контроллера хорошо определены каркасом, в любом учебном пособии будут указаны три компонента, поскольку он просматривает файлы, которые он создал.

В других системах эти детали могут быть сложнее идентифицировать. Кроме того, MVC не является "идеальным", просто имейте в виду, что существуют допустимые альтернативы, но это хороший способ начать организацию.

Ответ 3

enter image description here

MVC в основном указывает Model-View-Controller. И MVC используется многими языками, такими как PHP, Perl, Python и т.д. Обычно MVC работает следующим образом:

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

Ответ 4

Я думаю, что лучший способ обернуть голову вокруг MVC - это пример. Попробуйте кодировать простое приложение Rails с помощью MVC. В Интернете есть много обучающих программ, таких как пример блога в разделе "Начало работы с Rails" .

Если вы решили изучить по примеру кода, проверьте ответы на Где я могу найти ясные примеры MVC?

Ответ 5

MVC специально не предназначен для Ruby on Rails. Это было фактически создано некоторое время, прежде чем Ruby on Rails когда-либо появлялись. Это, в основном, способ организации вашего кода, чтобы у вас был код, отвечающий за ваши модели (версия класса таблицы базы данных), некоторый код, отвечающий за ваши взгляды (что визуально отображается пользователю) и код, который отвечает для ваших контроллеров (что связывает взгляды с моделями и выполняет основную часть вашей логики.

Это описание без рамки. Каждая структура, использующая MVC, имеет другой способ ее реализации. Для Ruby on Rails каждая модель представляет таблицу базы данных как класс, который может напрямую связываться с кодом с другими объектами без необходимости писать какой-либо SQL. Все SQL заботятся в фоновом режиме, и вам просто нужно думать об этом, как если бы это был обычный класс (ну почти, он еще не до конца). Представление - это в основном HTML и представляет, что будет отправлено в браузер. Контроллер - это всего лишь код, который объединяет модели и представления.

В целом, MVC не специфичен только для Ruby on Rails..., который является самым популярным.

Ответ 6

Принцип управления модельным представлением разделяет работу приложения на 3 отдельные, но тесно взаимодействующие подсистемы.

Модель (ActiveRecord):

Он поддерживает взаимосвязь между объектами и базой данных и обрабатывает проверку, объединение, транзакции и т.д.

Эта подсистема реализована в библиотеке ActiveRecord, которая обеспечивает интерфейс и привязку между таблицами в реляционной базе данных и программным кодом Ruby, который управляет записями базы данных. Имена Ruby-метода автоматически генерируются из имен полей таблиц базы данных.

Просмотр (ActionView):

Это представление данных в определенном формате, вызванное решением диспетчера представить данные. Это script основанные на шаблонах системы, такие как JSP, ASP, PHP, и очень легко интегрируются с технологией AJAX.

Эта подсистема реализована в библиотеке ActionView, которая представляет собой основанную на Embedded Ruby (ERb) систему для определения шаблонов презентаций для представления данных. Каждое веб-соединение с Rails-приложением приводит к отображению вида.

Контроллер (ActionController):

Объект внутри приложения, который направляет трафик, с одной стороны, запрашивает модели для конкретных данных, а с другой стороны, организует эти данные (поиск, сортировку, обмен сообщениями) в форму, которая соответствует потребностям данный вид.

Эта подсистема реализована в ActionController, которая является брокером данных, который находится между ActiveRecord (интерфейс базы данных) и ActionView (механизм представления).

Проверьте ссылки ниже, чтобы получить четкое представление о mvc в рельсах:

http://www.bogotobogo.com/RubyOnRails/RubyOnRails_Model_View_Controller_MVC.php

https://betterexplained.com/articles/intermediate-rails-understanding-models-views-and-controllers/

Ответ 7

Ruby on Rails не реализует шаблон проектирования MVC. Ruby on Rails имеет папки, называемые контроллерами, моделями и представлениями. В папке views есть файлы HTML. Папки контроллеров и моделей имеют рубиновые файлы. Контроллеры сопоставляются с URL-адресом, а метод в контроллере выполняется после запроса этого URL-адреса, связанного с ним вида (файла HTML) загружается, а модель (структура данных) используется для заполнения представления. Это степень его сходства с шаблоном проектирования MVC. Это позор, что люди говорят, что это MVC, потому что это вызвало недоумение и непонимание шаблона проектирования MVC.

В Rails модель представляет собой структуру данных.

Ответ 8

Вот краткий обзор на высоком уровне о том, как работает шаблон MVC:

Контроллер:

  • Слушает какой-то поток взаимодействия/событий.
  • Контроллер может отправить модель такого типа взаимодействия/события.
  • Контроллер также может связываться с представлением.

Модель:

  • Модели будут прослушивать взаимодействие/событие с контроллера.
  • Является абстракцией источника данных.
  • Обрабатывает логику данных и манипуляции.
  • После выполнения логики он затем отправляет контроллеру, который затем связывается с представлением.

Вид:

  • Вид может связываться с контроллером.
  • Знает, как визуально отображать данные из модели в браузер.
  • Контроллер сообщает "Открыть", чтобы что-то сделать с Модель.

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

проверьте эту ссылку для более четкого понимания

еще одна ссылка, чтобы получить четкость