2017-01-03 7 views
-1

Ich hoffe auf ein wenig Design-Anleitung hier. Ich habe eine Rails-basierte DB-Anwendung mit vielen "Admin" -Bildschirmen, die in den üblichen Rails-Weisen geschrieben wurden, einschließlich eines Rails-Layouts.Rails-basierte DB, Google Maps User API, Layouts vermeiden?

Aber jetzt schreibe ich einen "Endbenutzer" -Bildschirm, der effektiv einige der Daten auf einer Google Maps-Karte im Vollbild darstellt. Es möchte ein paar Knöpfe und Einstellungen haben, also werde ich I18n Unterstützung wollen, aber abgesehen davon scheint es, als ob es nichts aus einem Rails Layout oder tatsächlich den meisten Rails Infrastruktur jenseits der Routen zu gewinnen gibt - oder gibt es?

Wer ist schon auf diesen Weg gestolpert und konnte einige Gedanken darüber teilen, wie man das am besten angeht? Ich habe einen Prototyp, der funktioniert, aber ich habe immer noch den Verdacht, dass mein Mangel an Erfahrung in diesem Bereich bedeutet, dass ich einige Rails-Güte vermisse.

Antwort

0

Was ich getan habe, war zwei verschiedene Layouts Stylings zu erstellen, eines für die Admin-Seite und eines für die Benutzerseite. Die wichtigsten Dinge zu merken sind:

  • Sie müssen Rails über initializers sagen, das zusätzliche Layout
  • Sie müssen verarbeiten, um die Layout-Dateien in Unterordner aufgeteilt sonst Rails Asset Manager alles in einer einzigen Asset-Datei bündelt
  • Sie können eine ähnliche Spaltung eines Javascript-Code, die Sie
  • stylesheet_link_tag geschrieben haben könnten und javascript_include_tag in Ihren Dateien stellen sicher, dass das richtige Layout Design und Quellcode in Ihre Datei
  • U gebracht se so etwas wie render file: 'static_pages/map.html', layout: false in Ihrem Controller, um sicherzustellen, dass das Standard-Layout nicht um alle Dateien gewickelt ist, dass sie nicht will, könnte (und ist in der Regel eigenständige HTML)

Ich bin sicher, es gibt auch andere Muster, die das gleiche erreichen könnten Effekt, aber das hat für die vereinfachten Anforderungen funktioniert, die ich hatte.