2010-09-13 38 views
4

是否有一種機制或可接受的方法來響應具有更復雜格式擴展的請求?rails controller respond_to格式,帶兩個擴展名(例如tar.gz)

我的具體情況涉及返回一個plist文件。但是,我需要有時將這個文件作爲XML plist文件返回,有時候作爲二進制plist文件返回。

我以爲像/resources.xml.plist/resources.binary.plist組成的URL可以很好地區分它們。然後,我需要爲binary.plist添加MIME類型,併爲xml.plist添加一個MIME類型,然後以某種方式響應這些格式。

是否有人知道這可能是如何完成和/或有一個更好的方法的想法?

回答

8

看看教程「Using custom mime types」。


Mime::Type.register "application/xml", :plist_xml, [], ["xml.plist"] 
Mime::Type.register "application/octet-stream", :plist_binary, [], ["binary.plist"] 

... 

respond_to do |format| 
    format.plist_xml { ... } 
    format.plist_binary { ... } 
end 
+0

提醒我關於擴展別名的道具,但是這不起作用,因爲rails不能識別路由。我會稍微玩一下'routes.rb',看看它是否能夠實現。 – 2010-09-14 02:02:55

+1

改變路線是這樣的(至少在Rails 3中)做了這樣的訣竅:'resources:people,:constraints => {:format => /[az]+(\.[az]+)?/ }' – 2010-09-14 05:11:33