Durch Umschließen eines vorhandenen Objekts mit einem neuen Decorator-Objekt können Sie Funktionen von außen hinzufügen oder neu schreiben, ohne den Inhalt vorhandener Funktionen und Klassen direkt zu berühren. Es wird auch als Alternative zur Klassenvererbung verwendet, wenn eine vorhandene Klasse erweitert wird.
Die Rolle der Umwandlung von "Daten (einfach von einem Programm zu verwalten)" in "Informationen (für den Benutzer leicht verständlich)". Um es zu benutzen, installiere und benutze einen Edelstein namens "draper". Generieren Sie Dateien unter App / Decorators.
gem 'draper'
Führen Sie dies auch aus.
$ budle install
$ rails generate draper:install
#Schienen erzeugen Dekorator Modellname
$ rails generate decorator Article
Modell-
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
Aussicht
・
・
・
<%= @article.publication_status %>
・
・
・
object.published_at.strftime("%A, %B %e")
model.published_at.strftime("%A, %B %e") #Modell ist Objektalias
class ArticleDecorator < Draper::Decorator
delegate_all
end
class ArticleDecorator < Draper::Decorator
#Im Titel Objekt.Sie können auf den Titel zugreifen
delegate :title, :body
#Delegieren Sie die angegebene Methode an das angegebene Objekt
delegate :name, :title, to: :author, prefix: true
end
Über die Rolle des Dekorateurs und Drapierers
Zusammenfassung der Verwendung von Draper
Recommended Posts