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).
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
La vue
Le controlle
** 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!
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.
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.
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?
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/
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.
Voici un bref aperçu général du fonctionnement du modèle MVC:
Contrôleur:
Modèle:
Vue:
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.
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.