L'arquitectura MVC (Model-View-Controller) és un patró de disseny àmpliament utilitzat en el desenvolupament d'aplicacions web, especialment en Ruby on Rails. Aquest patró separa l'aplicació en tres components interconnectats, permetent una millor organització del codi i una major facilitat de manteniment.

Components de l'Arquitectura MVC

  1. Model

El Model representa la lògica de negoci i la gestió de dades de l'aplicació. És responsable de:

  • Definir les estructures de dades.
  • Gestionar la persistència de dades (interactuar amb la base de dades).
  • Implementar la lògica de negoci.

Exemple de Model en Ruby on Rails:

class Article < ApplicationRecord
  validates :title, presence: true
  validates :body, presence: true
end

En aquest exemple, el model Article defineix una estructura de dades per a articles i valida que els camps title i body estiguin presents.

  1. Vista

La Vista és responsable de la presentació de la informació a l'usuari. Genera la interfície d'usuari i mostra les dades proporcionades pel Model.

Exemple de Vista en Ruby on Rails (ERB):

<!-- app/views/articles/show.html.erb -->
<h1><%= @article.title %></h1>
<p><%= @article.body %></p>

Aquest exemple mostra com es pot utilitzar ERB (Embedded Ruby) per incrustar codi Ruby dins d'un fitxer HTML per mostrar les dades d'un article.

  1. Controlador

El Controlador actua com a intermediari entre el Model i la Vista. Gestiona les sol·licituds de l'usuari, interactua amb el Model per obtenir dades i selecciona la Vista adequada per mostrar la resposta.

Exemple de Controlador en Ruby on Rails:

class ArticlesController < ApplicationController
  def show
    @article = Article.find(params[:id])
  end
end

En aquest exemple, el controlador ArticlesController té una acció show que cerca un article per ID i el passa a la Vista.

Flux de Treball en MVC

  1. Sol·licitud de l'Usuari: L'usuari fa una sol·licitud (per exemple, accedir a una pàgina web).
  2. Controlador: El controlador rep la sol·licitud, processa qualsevol lògica necessària i interactua amb el Model per obtenir les dades.
  3. Model: El model gestiona la lògica de negoci i la persistència de dades, retornant les dades necessàries al controlador.
  4. Vista: El controlador passa les dades a la Vista, que genera la interfície d'usuari i mostra la informació a l'usuari.

Exercici Pràctic

Objectiu

Crear una aplicació simple en Rails que mostri una llista d'articles i permeti veure els detalls de cada article.

Passos

  1. Generar el Model:

    rails generate model Article title:string body:text
    rails db:migrate
    
  2. Definir el Controlador:

    rails generate controller Articles
    
  3. Afegir Accions al Controlador:

    # app/controllers/articles_controller.rb
    class ArticlesController < ApplicationController
      def index
        @articles = Article.all
      end
    
      def show
        @article = Article.find(params[:id])
      end
    end
    
  4. Crear Vistes:

    <!-- app/views/articles/index.html.erb -->
    <h1>Articles</h1>
    <ul>
      <% @articles.each do |article| %>
        <li>
          <%= link_to article.title, article_path(article) %>
        </li>
      <% end %>
    </ul>
    
    <!-- app/views/articles/show.html.erb -->
    <h1><%= @article.title %></h1>
    <p><%= @article.body %></p>
    
  5. Configurar Rutes:

    # config/routes.rb
    Rails.application.routes.draw do
      resources :articles, only: [:index, :show]
    end
    

Solució

Després de seguir els passos anteriors, hauríeu de tenir una aplicació Rails que mostra una llista d'articles i permet veure els detalls de cada article.

Resum

L'arquitectura MVC és un patró de disseny que separa una aplicació en tres components: Model, Vista i Controlador. Aquesta separació facilita la gestió del codi i la seva mantenibilitat. En aquest mòdul, hem après com implementar aquest patró en una aplicació Rails simple, creant models, controladors i vistes per gestionar i mostrar dades.

En el següent tema, explorarem les rutes en Rails, que són essencials per definir com les sol·licituds de l'usuari es mapegen a les accions del controlador.

© Copyright 2024. Tots els drets reservats