En enveloppant un objet existant avec un nouvel objet Decorator, vous pouvez ajouter ou réécrire des fonctions de l'extérieur sans toucher directement le contenu des fonctions et des classes existantes. Il est également utilisé comme alternative à l'héritage de classe lors de l'extension d'une classe existante.
Le rôle de convertir des "données (faciles à gérer par un programme)" en "informations (faciles à comprendre par l'utilisateur)". Pour l'utiliser, installez et utilisez une gemme appelée "draper". Générez des fichiers sous app / décorateurs.
gem 'draper'
Exécutez également ceci.
$ budle install
$ rails generate draper:install
#les rails génèrent le nom du modèle du décorateur
$ rails generate decorator Article
modèle
app/decorators/article_decorator.rb
class ArticleDecorator < Draper::Decorator
delegate_all
def publication_status
if published?
"Published at #{published_at.strftime("%A, %B %e")}"
else
"Unpublished"
end
end
end
Vue
・
・
・
<%= @article.publication_status %>
・
・
・
--Accédez à l'instance de modèle
object.published_at.strftime("%A, %B %e")
model.published_at.strftime("%A, %B %e") #le modèle est un alias d'objet
--Délégation de toutes les méthodes
class ArticleDecorator < Draper::Decorator
delegate_all
end
--Délégation de la méthode spécifiée
class ArticleDecorator < Draper::Decorator
#Dans le titre, l'objet.Vous pourrez accéder au titre
delegate :title, :body
#Déléguer la méthode spécifiée à l'objet spécifié
delegate :name, :title, to: :author, prefix: true
end
Préparez un décorateur pour afficher la vue Rails pour aider Helper et Modeler
À propos du rôle du décorateur et du drapier
Résumé de l'utilisation de Draper
Recommended Posts