2011-01-14 9 views
0

Ich arbeite an einer Rails-App, die ein: mobiles Format für iPhone und Android deklariert und z. B. show.mobile.haml für mobile und show.html.haml für das Web anbietet.Erstellen eines Anwendungslayouts für mehrere Formate

Das mobile Anfrageformat verwendet offensichtlich application.mobile.haml und das Web verwendet application.html.haml - aber beide Layouts sind identisch, nur die Ansichten unterscheiden sich.

Meine Frage ist - wie verwende ich ein einzelnes Anwendungslayout für die mobilen und HTML-Anfrageformate? Haben die Rails-API-Dokumentation durchforstet und können keine offensichtliche Lösung finden.

Antwort

0

Sie müssen nichts tun. Dies geschieht automatisch, wenn Sie Ihren URLs eine Erweiterung hinzufügen. Wenn Sie zu /controller/action.mobile gehen wird die action.mobile.haml Ansicht gerendert werden. Wenn Sie unter /controller/action.html die action.html.haml Ansicht wird gerendert werden.

Dieses Verhalten wird vom Format Parameter verwaltet (Sie können dies in Ihrer Routes-Datei sehen). So /controller/action.mobile ist das gleiche wie /controller/action? Format = mobile.

Natürlich möchten Sie manchmal, dass sich Ihre Aktionen abhängig vom aktuellen Format unterschiedlich verhalten. Dies wird unterstützt durch die Verwendung der Methoden reply_to und respond_with. Weitere Informationen zu diesen finden Sie unter here.

+0

Ich denke, Dave versucht zu vermeiden, dass sowohl application.mobile und application.html Layout-Dateien haben müssen? Kannst du einen der anderen betrügen? –

+0

Für diesen Blick hier: http://stackoverflow.com/questions/339130/how-do-irender-a-partial-of-a-different-format-in-rails –

+0

Vielen Dank Stefaan. Ja, John hat Recht. Ich verstehe deine Antwort - ich habe eine Reihe von Ansichten, die sich unterscheiden, zum Beispiel, ich habe show.html.haml und show.mobile haml. Aber das Anwendungslayout wird in application.mobile.haml und application.html.haml kopiert und ich möchte das gleiche Layout für beide bereitstellen: mobile und: html Anfrageformate. Ich betrachte diesen Betrug nicht, ich möchte nur den Code DRY. Und ich möchte nicht das gleiche Anwendungslayout für ALLE Formate bereitstellen, nur: mobile und: web. – buddhamagnet

Verwandte Themen