Einführung
Github: Ordentliches Belichtungsjuwel
Decent Exposure ermöglicht es uns, exponierte Variablen zu erstellen, die für alle Aktionen des Controllers verwendet werden können, anstatt Instanzvariablen zu wiederholen. Auf exponierte Variablen kann auch über Ansichten zugegriffen werden, und sie speichern die resultierenden Werte. Mit anderen Worten, es ist ein Hilfsmittel zum Erstellen deklarativer Schnittstellen in Controllern.
Ein paar Punkte
- Verbesserung der Kapselung
- Variablen für Ansichten können oben im Controller angezeigt werden
- Kompatibel mit strong_parameters, Dekorateuren
- Entlarvt Code-Gerüche.
Schauen Sie hier: http://c2.com/cgi/wiki?CodeSmell
Tipps zum Spielen mit anständigem Belichtungsjuwel in einer Rails-App
- Edelstein hinzufügen 'decent_exposure' in die Gemfile und führen Sie die Bundle-Installation aus
- Wie ein Controller verwendet anständige_Belichtung sieht aus wie:
- Um zu verhindern, dass vertrauliche Modellattribute versehentlich aktualisiert werden, ist „Decent Exposure“ standardmäßig enthalten und erfordert, dass alle Parameter auf die Whitelist gesetzt werden. Es verfügt über eine integrierte Unterstützung für die Übergabe starker Parameter.
- It deals with overexposure.The ideal number of exposures is two per controller
(1 -> singular resource, e.g. item and 2 -> plural collections e.g. items). - Wenn der obere Teil der Controller-Klasse mit Expose-Anweisungen überfüllt ist, können zwei Codegerüche auftreten, z. B. exponierende Variablen dürfen nicht in der Ansicht verwendet werden und Controller mit mehreren Verantwortlichkeiten.
- We can utilize expose with block feature to decorate the object:
expose(:item) { |default| ItemDecorator.new(default) } - Wenn die Modellklassen durch einen Namespace wie Blog::Post abgedeckt sind, müssen wir ihn beim Expose-Aufruf mit model angeben:
class Blog::PostsController < ApplicationController
expose(:post, model: Blog::Post)
Ende
Einige Ressourcen
API-Änderungen: API-Änderungen in der neuen Version
Railcasts: Ordentliche Belichtung
Anständige Dekoration: Anständiges Dekorationsjuwel
Ein Blog: So verringern Sie die Kopplung in Controllern und Ansichten
Bleiben Sie dran!
Thanks,