Frage

Ich schreibe eine App, die - ähnlich wie viele Anwendungen gibt -. 90% regelmäßige CRUD Sachen und 10% „Saft“, wo wir böse Business-Logik und mehr Flexibilität und Anpassung benötigen

In Bezug auf dieses 90%, ich habe versucht, auf das DRY-Prinzip zu halten, so viel wie ich kann. Solange Controller gehen, ich habe resource_controller gefunden, um wirklich arbeitet, und ich konnte von allen Controllern auf diesem Gebiet entfernen, sie mit einem allgemeinen zu ersetzen.

Nun würde ich gerne wissen, wie das gleiche mit den Ansichten zu erhalten. Auf dieser App habe ich eine Gesamt, application.html.erb Layout und dann muss ich eine andere Layout-Ebene, die für alle CRUD Ansichten haben und schließlich einen „Kern“ Teil:

  • Auf index.html.erb alles was ich brauche eine einfache Tabelle mit den Feldern zu erzeugen und Etiketten I an.

  • Für neuen und bearbeiten, auch generische Form Ausgabe, Hinweisschilder und Felder (mit der Möglichkeit, benutzerdefinierte Felder bereitzustellen, wenn erforderlich).

  • Ich bin nicht sicher, ob ich zeigen müssen, aber wenn ich es wäre das gleiche, wie neu und bearbeiten tun.

Was Plugins und Tools (oder sogar Artikel und allgemeine Zeiger) mir helfen würde, das getan zu bekommen?

Danke, Felipe.

War es hilfreich?

Lösung

Wenn Sie die Controller Dryed oben haben und wollen nun die Ansichten trocknen, ein Ansatz ist es, render :action => *actionname* und die UI-Inhalte zu speichern, die in Instanzvariablen ändern können (so dass sie auf der Ansicht verfügbar sind) Auf diese Weise können der Lage wäre, die gleiche Ansicht von wiederverwenden bearbeiten neue Liste oder zeigen . Zum Beispiel bearbeiten Sie etwas im Zusammenhang mit Foo , dann sollten Sie Titel lesen Editing <%= @type %>, so sollten Sie Ihre Form Helfer. Foo könnte auch dann ändern bar . So werden Sie die gleiche Ansicht für verschiedene Entitäten neu (oder Controller soll ich sagen). Denken Sie daran, dass, im Gegensatz zu redirect_to, render :action nur die Ansicht rendert und nicht die Controller-Aktion der Aktion ruft es zu machen versucht.

Eines ist sicher, wenn Sie vertrocknen etwas wollen, müssen Sie eine Konvention standardisieren oder zu folgen. Beispiel ist die Struktur Ihrer Ansichten, in diesem Fall.

Andere Tipps

Sie könnten script/generate scaffold test name:string description:text valid:boolean laufen und auf den Ansichten betrachten, die (und laufen script/destroy scaffold test um die Dateien zu entfernen) erzeugt. Das gibt Ihnen ein gutes Gefühl für die übliche Weise der 4 Standard-Rails Ansichten zu schreiben.

Ich würde empfehlen, auch die entsprechenden Kapitel in "Agile Web Development mit Rails" zu lesen und "The Rails Way".

Wenn Sie vorhandene Ansichten haben, die oben gereinigt werden müssen, um diese Folge von Railscasts ist groß: Bereinigen der Ansicht

Dary

Sieht aus wie es nur ein neues Juwel ist, dass auf Ihre Anforderungen sehr nahe ist:

http://github.com/codez/dry_crud

Auf der Grundlage einer gemeinsamen übergeordneten Klasse (CrudController), können Sie CRUD-Funktionalität für Ihre verschiedenen Modell-Controller erben und anpassen, was es Besonderes. Dies ist, was Sie bereits haben, höchstwahrscheinlich.

Die neue Sache über dry_crud ist, dass auch Ansichten und partials vererbbar sind. Sie definieren eine gemeinsame Basisvorlage für jede CRUD Aktion, vielleicht in ein paar partials geteilt. Dank der vorgesehenen Helfer, Formulare und Tabellen können allgemein mit Blick auf die Spaltendefinitionen des aktuellen Modells definiert werden. In Ihrem speziellen Ansichten des Modells, können Sie dann anpassen nur die partials oder Ansichten, die Customizing benötigen.

Haben Sie einen Blick in der Dokumentation auf der Website gefunden oben und trocken bleiben!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top