2012-03-26 2 views
2

Ich habe eine Route, die eine Anfrage an somepath/:id(.:format) zu somecontroller#show leitet.Route eine Anfrage mit bestimmten Format an eine andere Steuerung in Rails

Dies gilt für jede Anfrage in jedem Format. Ich habe jedoch eine Bedingung, wo somepath/:id.png ein Bild zurückgeben sollte, und der Code dafür ist bereits in othercontroller#show implementiert.

Ich dachte, es wäre am besten, die PNG-Anfragen an othercontroller zu routen, anstatt den Code zu duplizieren.

Was wäre der Weg, dies zu erreichen?
Ich habe überlegt, Einschränkungen zu verwenden, aber ich bin mir nicht sicher, ob das der richtige Ansatz wäre.

Antwort

3

Der einzige Weg, ich sehe

match 'somepath/:id.png' => 'othercontroller#show' 
match 'somepath/:id(.format)' => 'somecontroller#show 

Dieser leitet alle .png Anfragen an andere Controller zu verwenden ist, und alle anderen somecontroller.

Be sicher dass Sie png Route vor die andere platzieren.

+1

Das funktioniert so ziemlich, man musste einfach ': format =>: png' hinzufügen. Der einzige Nachteil ist, dass es dieses Format nicht erzwingt, so dass ich tatsächlich auf 'somepath/id.png.json' zugreifen kann. – GeReV

0
match 'photos/:id' => 'photos#show', :defaults => { :format => 'gif' } 

Rails würde Fotos/12 zur Show Wirkung von Photos entsprechen, und legen Sie params [: Format] auf "jpg".

mehr info

Verwandte Themen