Verwenden eines alternativen Rails-Layouts, aber derselben Ansicht auf mobilen Geräten

8

Ich habe die gleichen Taktiken im Railscast für mobile Geräte verwendet, um ein alternatives Layout für meine Site bereitzustellen in einem mobilen Browser.

Wenn ein mobiler Browser gefunden wird, ist request.format auf: mobile eingestellt, was ich als Mime-Typ definiert habe. Ich habe ein neues Layout für mobile Geräte erstellt. Wenn ich eine mobile Ansicht bereitstelle (z. B. show.mobile.haml), werden sowohl die mobile Ansicht als auch das Layout auf mobilen Geräten verwendet, und alles funktioniert hervorragend.

Das Problem ist, ich möchte nicht völlig neue Ansichten erstellen, es ist nur das Layout, das ich ändern möchte. Wenn ich keine entsprechend benannte Ansicht erstelle, wird das mobile Layout niemals verwendet. So wie es ist, kann ich nur beides oder beides auf mobilen Geräten ändern.

Was fehlt mir hier? Wie kann ich Rails dazu bringen, nur das Layout zu tauschen, wenn ich einen mobilen Benutzer habe?

    
Kelly 13.08.2011, 02:59
quelle

2 Antworten

18

Angenommen, Sie haben die Methode mobile_device? aus Railscasts hinzugefügt, fügen Sie einfach Folgendes zu application_controller.rb hinzu:

%Vor%

Stellen Sie sicher, dass Sie die Datei mobile.html.erb in app / views / layouts

erstellen

Da Sie dieselbe Ansicht rendern möchten, müssen Sie sich keine Gedanken über das request.format machen.

    
tybro0103 13.08.2011, 03:13
quelle
4

Ich habe immer gefunden, dass das angeforderte Format von HTML auf Mobile umgestellt wurde, um gegen die Konvention zu sein. Es missbraucht das Tool völlig, also ist es kein Wunder, dass Sie Probleme bekommen, DRY zu bleiben.

Anstatt das angeforderte Format zu wechseln, prüfen Sie einfach, ob eine bestimmte Anfrage von einem mobilen Gerät stammt, und legen Sie das Layout darauf fest. Bing, bang, boom - fertig. Es geht nicht darum, etwas mit etwas zu tun, das nicht verwandt ist, weil jemand anderes es getan hat, und Sie können sich wieder an die Arbeit machen.

Ich poste Code, aber Tybro0103 schlug mich einfach mit einem Link zum Booten. Ooooh aaaaah!

    
coreyward 13.08.2011 03:17
quelle

Tags und Links