web-dev-qa-db-fra.com

Qu'est-ce que MVC dans Ruby on Rails?

Quelqu'un pourrait-il m'expliquer s'il vous plaît MVC dans Ruby on Rails, en termes simples. Je suis particulièrement intéressé par la compréhension du modèle dans MVC (je ne peux pas comprendre le modèle).

22
Imran

Un peu en arrière-plan, MVC est un modèle de conception (composé) et a été développé en 1979 par Trygve Reenskaug (Smalltalk).

True MVC était principalement destiné à être utilisé dans des systèmes multiniveau (non Web) et divise un système en 3 parties distinctes: un modèle, une vue et un contrôleur

Le modèle

  • Contient des données pour l'application (souvent liées à une base de données)
  • Contient l'état de l'application (par exemple, quelles commandes a un client)
  • Contient toute la logique métier
  • Notifie la vue des changements d'état (** pas vrai de ROR, voir ci-dessous)
  • Aucune connaissance des interfaces utilisateur, donc il peut être réutilisé

La vue

  • Génère l'interface utilisateur qui présente les données à l'utilisateur
  • Passif, c’est-à-dire qu’il ne fait aucun traitement
  • Le travail de visualisation est terminé une fois que les données sont affichées à l'utilisateur.
  • De nombreuses vues peuvent accéder au même modèle pour différentes raisons.

Le controlle

  • Recevoir des événements du monde extérieur (généralement par le biais de vues)
  • Interagir avec le modèle
  • Affiche la vue appropriée pour l'utilisateur

** Classic MVC ne convient pas aux applications Web, car le modèle ne peut pas envoyer toutes les modifications à la vue de manière observatrice (la vue est une page Web). Le Model2 a été introduit pour surmonter l’infrastructure changeante de l’équipe JSP dans les années 90. Les frameworks Web MVC ne sont pas vraiment MVC, mais Model2 (c'est le cas de Ruby on Rails).

Voici une description des modèles d'interface graphique, y compris MVC du maître, Martin Fowler Architectures d'interface graphique

Le meilleur livre que j'ai trouvé jusqu'à présent est Développement Web agile avec Rails . Il commence par supposer ne pas avoir de connaissances et est assez complet.

J'espère que cela aide à vous éclairer!

46
MGrev

Votre modèle est la structure de données utilisée par votre programme.

La vue est la partie qui interagit avec l'écran ou le niveau supérieur.

Le contrôleur traite généralement les données entre le modèle et la vue.

Les structures MVC étant souvent imbriquées, un "modèle" ou une "vue" peut contenir son propre composant MVC (pensez à un composant à l'écran. Vous pouvez simplement le remplir avec une chaîne, mais en coulisse, le code du composant génère little view, a son propre petit modèle (la chaîne que vous transmettez) et un petit contrôleur dessine les données sur la vue.

Dans Rails, les rôles du modèle, de la vue et du contrôleur sont bien définis par le framework. Tout tutoriel indiquera les trois composants au fur et à mesure qu'il vous guide dans les fichiers qu'il a créés.

Dans d'autres systèmes, ces éléments peuvent être plus difficiles à identifier. De plus, MVC n'est pas "parfait", gardez simplement à l'esprit qu'il existe des alternatives valables, mais que c'est un bon moyen de commencer à organiser.

3
Bill K

enter image description here

MVC indique essentiellement Model-View-Controller. Et MVC utilisé par de nombreux langages comme PHP, Perl, Python, etc. En général, MVC fonctionne comme ceci:

La demande parvient d’abord au contrôleur, le contrôleur trouve la vue appropriée et interagit avec celui-ci, le modèle interagit avec votre base de données et envoie la réponse au contrôleur, puis le contrôleur en fonction de la réponse donne le paramètre de sortie à afficher.

2
Anjan

Je pense que la meilleure façon de comprendre MVC est de donner l'exemple. Essayez de coder une application Rails simple en utilisant MVC. Il existe de nombreux tutoriels en ligne, tels que l'exemple de blog dans "Premiers pas avec Rails" .

Si vous avez choisi d'apprendre en codant un exemple, consultez les réponses à Où puis-je trouver des exemples clairs de MVC?

1
Pete

Le principe du contrôleur de vue modèle divise le travail d'une application en 3 sous-systèmes distincts mais étroitement coopératifs.

Modèle (ActiveRecord):

Il maintient la relation entre les objets et la base de données et gère la validation, l'association, les transactions, etc.

Ce sous-système est implémenté dans la bibliothèque ActiveRecord, qui fournit une interface et une liaison entre les tables d’une base de données relationnelle et le code du programme Ruby qui manipule les enregistrements de la base de données. Les noms de méthodes Ruby sont générés automatiquement à partir des noms de champs des tables de base de données.

Vue (ActionView):

Il s'agit d'une présentation de données dans un format particulier, déclenchée par la décision du contrôleur de présenter les données. Ce sont des systèmes de templates basés sur des scripts tels que JSP, ASP, PHP et très faciles à intégrer avec la technologie AJAX.

Ce sous-système est implémenté dans la bibliothèque ActionView, qui est un système basé sur Embedded Ruby (ERb) permettant de définir des modèles de présentation pour la présentation de données. Chaque connexion Web à une application Rails entraîne l'affichage d'une vue.

Contrôleur (ActionController):

Installation de l'application qui dirige le trafic, d'une part, interroge les modèles pour des données spécifiques et, d'autre part, organise ces données (recherche, tri, messagerie) dans un formulaire qui répond aux besoins d'une vue donnée.

Ce sous-système est implémenté dans ActionController, un courtier de données situé entre ActiveRecord (l'interface de base de données) et ActionView (le moteur de présentation).

Vérifiez les liens ci-dessous pour bien comprendre mvc dans Rails:

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

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

1
vinoth

MVC ne concerne pas uniquement Ruby on Rails. Il a en fait été créé quelque temps avant que Ruby on Rails ne soit disponible. Il s’agit principalement d’une manière d’organiser votre code de sorte que vous ayez du code responsable de vos modèles (la version Class d’une table de base de données), du code responsable de vos vues (ce qui est affiché visuellement à l’utilisateur) et du code responsable pour vos contrôleurs (ce qui lie les vues aux modèles et effectue la majeure partie de votre logique.

C'est la description non spécifique au framework. Chaque framework qui utilise MVC a une manière différente de le mettre en œuvre. Pour Ruby on Rails, chaque modèle représente une table de base de données en tant que classe pouvant communiquer directement en code avec d'autres objets sans avoir à écrire de code SQL. Tout le SQL est pris en charge en arrière-plan et il suffit de penser à cela comme s'il s'agissait d'une classe normale (enfin presque, ce n'est pas encore transparent). La vue est principalement HTML et représente ce qui sera envoyé au navigateur. Le contrôleur est simplement le code qui communique les modèles et les vues ensemble.

Dans l'ensemble, MVC n'est pas spécifique à Ruby on Rails ... c'est tout simplement le plus populaire.

1
Adam

Voici un bref aperçu général du fonctionnement du modèle MVC:

Contrôleur:

  1. Écoute une sorte de flux d’interaction/événement.
  2. Le contrôleur peut envoyer au modèle ce type d'interaction/événement.
  3. Le contrôleur peut également communiquer avec la vue.

Modèle:

  1. Les modèles écouteront les interactions/événements du contrôleur.
  2. Est une abstraction d'une source de données.
  3. Gère la logique et la manipulation des données.
  4. Une fois que cela est fait avec la logique, il envoie ensuite au contrôleur qui communiquera ensuite avec la vue.

Vue:

  1. La vue peut communiquer avec le contrôleur.
  2. Sait comment rendre visuellement les données du modèle au navigateur.
  3. Le contrôleur dit à View de faire quelque chose avec quelque chose du modèle.

Il convient de noter que les modèles ne peuvent pas communiquer directement avec les vues et inversement. Seul le contrôleur peut communiquer avec la vue et le modèle. Le contrôleur agit donc en tant que délégant pour l'interaction/l'événement extrait de l'interaction des utilisateurs sur le navigateur.

vérifiez ce lien pour plus de clarté

un autre lien pour clarifier

0
Tony Tai Nguyen

Ruby on Rails n'implémente pas le modèle de conception MVC. Ruby on Rails possède des dossiers appelés contrôleurs, modèles et vues. Le dossier views contient des fichiers HTML. Les dossiers contrôleurs et modèles contiennent des fichiers Ruby. Les contrôleurs mappent vers une URL et une méthode du contrôleur est exécutée lorsqu'elle demande cette adresse. La vue associée (fichier HTML) est chargée et le modèle (structure de données) associé est utilisé pour renseigner la vue. C’est l’étendue de sa ressemblance avec le modèle de conception MVC. C'est dommage que les gens disent que c'est MVC parce que cela a créé une génération de confusion et d'incompréhension du modèle de conception de MVC.

Dans Rails, le modèle est une structure de données.

0
Joey Guerra